Можно ли использовать CopyOnWriteArrayList с изменяемыми объектами? - PullRequest
2 голосов
/ 12 марта 2012

Я использую коллекцию

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

, где X - изменчивый объект.Я знаю, что из Java Concurrency на практике «коллекции копирования при записи получают свою безопасность потоков благодаря тому факту, что до тех пор, пока эффективно неизменяемый объект публикуется должным образом, при доступе к нему не требуется никакой дополнительной синхронизации».

Я перебираю коллекцию:

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

У меня вопрос, не подвергает ли меня этот метод проблемам безопасности потоков?Я думаю, что нет, так как метод X (modify) синхронизирован.

Спасибо.

1 Ответ

3 голосов
/ 12 марта 2012

Если у вас есть класс и коллекция, которые являются поточно-ориентированными, они могут использоваться вместе поточно-ориентированным образом. Могут быть ошибки, но я не вижу ничего в вашем примере.

...