Вниз
Скачать: CL | DM;

Оцените дизайн сайта, пожалуйста.   Найти похожие ветки 

 
Gero ©   (2004-12-29 21:24) [40]


> iZEN ©   (29.12.04 20:48)

Not found.


 
iZEN ©   (2004-12-29 22:17) [41]

to Gero ©   (29.12.04 21:24) [40]
Это он [jigsaw.w3.org] так перегружен - сам на него с пятого раза запостил. (-;

to TUser ©   (29.12.04 14:27) [29]
Вот фрагмент кода:
/**
   * Увеличивает внутренний счетчик,
   * возможно активирует нить.
   */
  public synchronized void release() {
     if (counter == 0) {
        this.notify();
     }
     counter++;
  }
  /**
   * Уменьшает счетчик или блокирует,
   * если тот равен 0
   * @throws InterruptedException передается из this.wait().
   */
  public synchronized void acquire() throws InterruptedException {
     while (counter == 0) {
        this.wait();
     }
     counter--;
  }

Ваши аргументы надуманны из-за непонимания семантики synchronized-методов в Java. У каждого объекта (и ещё у каждого класса, кстати) есть внутренний монитор, который связывается во время исполнения JVM с synchronized-методами: два и более потока (нити) не могут одновременно исполнять не то что единственный synchronized-метод но и любые два и более synchronized-метода объекта. Поэтому код release() с acquire() будет выполняться всегда последовательно - один за другим, вне зависимости от того, сколько потоков  (нитей) работает с семафором.
Комментарии:
this.notify() освобождает внутренний монитор объекта для первого попавшегося ожидающего (блокированного на мониторе) потока (нити);
this.wait() - единовременная блокировка потока (нити) на мониторе объекта - монитор взводится для конкретного потока (нити);
цикл while (counter == 0) {...} - виток - нужен для блокировки всех потоков (нитей), если они обращаются к коду при counter == 0.



Страницы: 1 2 вся ветка

Скачать: CL | DM;



Память: 0.52 MB
Время: 0.025 c
1-1104492294
Fl
2004-12-31 14:24
2005.01.16
Memo - Ctrl+Enter


1-1104325019
Aleksandr.
2004-12-29 15:56
2005.01.16
Люди, какая версия для Define у Делфи 2005?


14-1103778461
AZ
2004-12-23 08:07
2005.01.16
Руководитель предприятия


1-1104175889
NeedHelp
2004-12-27 22:31
2005.01.16
Vopros lenjaja =)) o funkcie try .... except


3-1102706621
sloug
2004-12-10 22:23
2005.01.16
Выделение записи в таблице




   Наверх