2011-06-18 19 views
5
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 
    } 
} 

bildirmek ihtiyacınız. Eğer jsp (Client) 'dan bir talep gelirse ve bu sınıftan geçerse, Thread (JSP'den gelen talep) wait ve notify otomatik olarak mı?anlayış Konu pusuya yardımcı ve Şu anda 100 kullanıcı destekliyorum

cevap

6

ben çok standart kitaplığından java.util.concurrent.Semaphore kullanılarak yerine özel bir Semaphore uygulanmasını yazma öneriyoruz. notify (Object.notify() itibaren) herhangi FIFO garantiler vermez: Bu genellikle daha iyi bir fikir neden sadece tek bir sebep söz

seçim keyfi ve uygulama takdirine oluşur

1

Sen Kendinizi bir semafor yazmak zorunda değilsiniz.

Semaphore için Java 6 belgelerine bir göz atın. ve bu tutorial, Thomas Darimont'dan.

İlgili konular