为了理解计数信号量的工作原理,我决定实现一个简单的版本。我想验证我当前的实现实际上是一个正确的实现,我没有错过任何明显的东西
public class CountingSemaphore {
private int limit;
public CountingSemaphore(int limit) {
this.limit = limit;
}
public synchronized void acquire() {
try {
if (limit == 0)
wait();
limit--;
} catch (Exception e) {
e.printStackTrace();
}
}
public synchronized void release() {
try {
if(limit == 0)
notifyAll();
limit++;
}catch(Exception e) {
e.printStackTrace();
}
}
}