我正在使用一个集合
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()方法是同步的。
感谢。
答案 0 :(得分:3)
如果您有一个类和一个线程安全的集合,它们可以以线程安全的方式一起使用。可能有问题,但我的例子中没有看到任何问题。