Блокировка поля класса в многоп. среде
От: Foror http://foror.ru
Дата: 25.03.08 11:53
Оценка:
public class Channel {
  private List current;

  public synchronized String build() {
    // здесь нужна блокировка на current
    current.clear();
    current.add(some...);
    // здесь уже не нужна на current
  }

  public List getCurrent() {
    return current;
  }
}

public class ChannelMixer {

  private Channel channel;

  public synchronized String build() {
    List selected = new ArrayList();
    selected.addAll(channel.getCurrent()); // здесь нужно дождаться пока завершиться модификация current, и только затем его прочитать
  }
}


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

Собственно как сделать блокировку на current?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.