有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    如果您有一个线程安全的类和集合,那么它们可以以线程安全的方式一起使用。可能会有陷阱,但我在你的例子中看不到