CopyOnWriteArrayList可以与可变对象一起使用吗?

时间:2012-03-12 08:19:46

标签: java multithreading collections thread-safety

我正在使用一个集合

    CopyOnWriteArrayList<X> myCOW =  new CopyOnWriteArrayList<X>();

其中X是可变对象。我知道,从Java Concurrency in Practice中可以看出,“写入时复制集合从以下事实中获得了线程安全性:只要有效地发布了一个有效的不可变对象,访问它时就不需要进一步的同步。”

我遍历集合:

   for (X x : myCOW) {
    if (conditionIsMet) {
       x.modify(); // modify() is a synchronized method in class X
    }
   } 

我的问题是,这种做法是否会让我遇到线程安全问题?我的猜测不是,因为X的modify()方法是同步的。

感谢。

1 个答案:

答案 0 :(得分:3)

如果您有一个类和一个线程安全的集合,它们可以以线程安全的方式一起使用。可能有问题,但我的例子中没有看到任何问题。

相关问题