java CopyOnWriteArrayList可以用于可变对象吗?
我正在使用一个集合
CopyOnWriteArrayList<X> myCOW = new CopyOnWriteArrayList<X>();
其中X是可变对象。我从Java并发实践中了解到,“写时拷贝集合的线程安全性源自这样一个事实,即只要有效地发布了不可变的对象,访问它时就不需要进一步的同步。”
我对集合进行迭代:
for (X x : myCOW) {
if (conditionIsMet) {
x.modify(); // modify() is a synchronized method in class X
}
}
我的问题是,这样做是否会使我面临线程安全问题?我猜不是,因为X的modify()方法是同步的
谢谢
# 1 楼答案
如果您有一个线程安全的类和集合,那么它们可以以线程安全的方式一起使用。可能会有陷阱,但我在你的例子中看不到