我正在学习CopyOnWriteArrayList,下面的情况让我思考。
我的主要方法是这样的:
public static void main(String[] args) {
List<String> list = new CopyOnWriteArrayList<String>();
list.add("Init1");
list.add("Init2");
list.add("Init3");
list.add("Init4");
for(String str : list){
System.out.println(str);
list.add("PostInit");
}
}
在 javadoc 中我读到:
内存一致性影响:与其他并发集合一样,在将对象放入 CopyOnWriteArrayList 之前线程中的操作发生在另一个线程中从 CopyOnWriteArrayList 访问或删除该元素之后的操作。
我期待一个无限循环,因为“在将对象放入 CopyOnWriteArrayList 之前线程中的操作发生在访问或删除之后的操作之前”。
但是我的控制台输出是:
Init1
Init2
Init3
Init4
我相信,我在这里缺乏一些了解。有人可以帮忙吗?
眼眸繁星
相关分类