Re: Блокировка поля класса в многоп. среде
От: ingie Россия  
Дата: 25.03.08 17:25
Оценка: 4 (1)
Здравствуйте, Foror, Вы писали:

F>Кто-то может вызвать Channel#build(), в свою очередь параллельно может быть запущен ChannelMixer#build(). Мне нужно, чтобы во время Channel#build(), на месте где происходит модификация Channel#current выставлялась блокировка на это поле, чтобы никто другой из вне не мог читать это поле (т.е. ожидал пока завершится модификация current в build()).


F>Собственно как сделать блокировку на current?


Блокировка это, конечно, хорошо, но её придётся делать почти везде где происходит вызов getCurrent().

Не силён в многопоточности, так что, пользуясь случаем хотелось бы задать вопрос знатокам...
Если на самом деле не нужно ожидать завершения модификации, можно ли написать так?

public class Channel {
  private List current;

  public String build() {
    List nc = new ArrayList();
    nc.add(some...);

    current = nc;
  }

  public List getCurrent() {
    return current;
  }
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.