Re[4]: Блокировка поля класса в многоп. среде
От: Kuzz Россия  
Дата: 26.03.08 08:56
Оценка:
Здравствуйте, ingie, Вы писали:


I>Блокировка в getCurrent() не поможет, если где-то будет написано

I>
I>c = getCurrent();
I>doSome(c);
I>

I>Да и вообще она почти ничему не поможет.

Чтобы нельзя было сделать doSome(c), нужно, чтобы с было Immutable, неизменяемое. В данном случае, List можно возвращать
через Collections.unmodifiableList(list).


I>Если уж с блокировками, то может лучше

I>
I>class Channel {
I>...
I>  forEach(Visitor v) {
I>    synchronized(current) {
I>      for (o : current) {
I>        v.visit(o);
I>      }
I>    }
I>  }
I>...
I>}
I>

I>И без getCurrent() вообще.
I>Иначе не будет гарантий как я понимаю. Или нет?

А зачем такие сложнотсти? Загромоздите архитектуру..
Actions speak louder than words
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.