CopyOnWriteArrayLis的一个小疑问
来源:5-8 并发容器及安全共享策略总结
![](http://img1.sycdn.imooc.com/user/58cdfd8d000165c107410741-100-100.jpg)
朱小悬
2019-01-14
老师好!
CopyOnWriteArrayList读操作时为什么还要再进行一次getArray(),直接return array[index]不好吗?
写回答
1回答
-
Jimin
2019-01-14
你好,能注意到这里的细节,给你点赞!
get()方法直接调用内部的getArray()方法,而getArray()方法则直接返回成员变量array。这里 array指向一个数组,是CopyOnWriteArrayList的内部数据结构:private transient volatile Object[] array;
这样设计的重点在于:
array是一个volatile变量,其读、写操作具有Happends-Before关系。具体来讲,线程W1通过set()方法“修改”集合后,线程R1能立刻通过get()方法得到array的最新值。012019-01-15
相似问题