`

A useful MultiSemaphore

 
阅读更多
java 代码
  1. public class MultiSemaphore   
  2. {   
  3.     protected int value;   
  4.     public MultiSemaphore(int v) {   
  5.         value = v;   
  6.     }   
  7.    
  8.     //The P method here takes an integer parameter of how many instances of the   
  9.     //semaphore lock have been requested. The method will block until all   
  10.     //instances are available.   
  11.     public synchronized void P(int no) {   
  12.         while ((value - no) < 0) {   
  13.             try {   
  14.                 wait();   
  15.             }   
  16.             catch (InterruptedException e) { }   
  17.         }   
  18.         value=value-no;   
  19.     }   
  20.    
  21.     // the V method allows the caller to release a number of instances of the   
  22.     // semaphore lock   
  23.     public synchronized void V(int no ) {   
  24.        value=value+no;   
  25.        notify();   
  26.     }   
  27. }  
分享到:
评论
1 楼 spainsherry 2007-03-14  
革命尚未成功,同志仍需努力

相关推荐

Global site tag (gtag.js) - Google Analytics