Здравствуйте, 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>Иначе не будет гарантий как я понимаю. Или нет?
А зачем такие сложнотсти? Загромоздите архитектуру..