1    
2    
3    
4    
5    
6    
7    
8    package org.xwt.util;
9    
10   
11   public class Semaphore {
12       
13       private int val = 0;
14   
15       public Semaphore() { };
16   
17       
18       public synchronized void block() {
19           while(val == 0) {
20               try {
21                   wait();
22               } catch (InterruptedException e) {
23               } catch (Throwable e) {
24                   if (Log.on) Log.info(this, "Exception in Semaphore.block(); this should never happen");
25                   if (Log.on) Log.info(this, e);
26               }
27           }
28           val--;
29       }
30       
31       
32       public synchronized void release() {
33           val++;
34           notify();
35       }
36   
37   }
38