Нужна помощь в понимании темы, подождите и сообщите - PullRequest
5 голосов
/ 18 июня 2011
class Semaphore {
   private int count=100;
   public Semaphore(int n) {
      this.count = n;
   }

   public synchronized void acquire() {
      while(count == 0) {
         try {
            wait();
         } catch (InterruptedException e) {
            //keep trying
         }
      }
      count--;
   }

   public synchronized void release() {
      count++;
      notify(); //alert a thread that's blocking on this semaphore
   }
}

В настоящее время я поддерживаю 100 пользователей.Если запрос приходит от jsp (клиента) и проходит через этот класс, автоматически ли будет поток (запрос от JSP) wait и notify?

Ответы [ 2 ]

6 голосов
/ 18 июня 2011

Я бы настоятельно рекомендовал использовать java.util.concurrent.Semaphore из стандартной библиотеки вместо написания пользовательской реализации семафора. Укажу только одну причину, по которой это, как правило, более удачная идея: notify не дает никаких гарантий FIFO (из Object.notify () ):

Выбор произвольный и происходит на усмотрение реализации

1 голос
/ 18 июня 2011

Вам не нужно писать семафор самостоятельно.

Посмотрите документацию по Java 6 для Семафор . и этот учебник от Томаса Даримонта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...