小编abj*_*305的帖子

了解CopyOnWriteArrayList迭代器行为

我正在学习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");
    }   
}
Run Code Online (Sandbox Code Playgroud)

在javadoc中,我读到:

内存一致性影响:与其他并发集合一样,在将对象放入CopyOnWriteArrayList之前在线程中执行的操作发生在访问或从另一个线程中的CopyOnWriteArrayList删除该元素之后的操作之前。

我一直期待一个无限循环,因为“在将对象放入CopyOnWriteArrayList之前,线程中的操作发生在访问或删除之后的操作之前”

但是我的控制台输出是:

Init1
Init2
Init3
Init4
Run Code Online (Sandbox Code Playgroud)

我相信,我在这里缺乏了解。有人可以帮忙吗?

java copyonwritearraylist

1
推荐指数
1
解决办法
57
查看次数

标签 统计

copyonwritearraylist ×1

java ×1