为了账号安全,请及时绑定邮箱和手机立即绑定

CopyOnWriteArrayList类set方法疑惑

CopyOnWriteArrayList类set方法疑惑

慕妹3146593 2018-12-06 12:33:49
在CopyOnWriteArrayList类的set方法中有一段setArray(elements)代码,实际上这段代码并未对elements做任何改动,实现的volatile语意并不对CopyOnWriteArrayList实例产生任何影响,为什么还是要保留这行语句? public E set(int index, E element) { final ReentrantLock lock = this.lock; lock.lock(); try { Object[] elements = getArray(); E oldValue = get(elements, index); if (oldValue != element) { int len = elements.length; Object[] newElements = Arrays.copyOf(elements, len); newElements[index] = element; setArray(newElements); } else {       // 就是这一段代码 setArray(elements); } return oldValue; } finally { lock.unlock(); } } private E get(Object[] a, int index) { return (E) a[index]; } final void setArray(Object[] a) { array = a; }
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 1056 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号