在理解线程等待和通知时需要帮助

问题描述

|
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(客户端)的请求经过该类,那么Thread(来自JSP的请求)是否会自动生成
wait
notify
?     

解决方法

        我强烈建议您使用标准库中的java.util.concurrent.Semaphore,而不是编写自定义Semaphore实现。仅提及为什么这通常是一个更好的主意的原因:“ 2”不给出任何FIFO保证(来自Object.notify()):   选择是任意的,并且由实现自行决定     ,        您不必自己编写信号量。 看一下Semaphore的Java 6文档。 以及来自Thomas Darimont的本教程。