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