【发布时间】:2014-10-02 16:48:40
【问题描述】:
我正在http://tutorials.jenkov.com/java-concurrency/semaphores.html阅读本教程
它的计数信号量实现是:
public class CountingSemaphore {
private int signals = 0;
public synchronized void take() {
this.signals++;
this.notify();
}
public synchronized void release() throws InterruptedException{
while(this.signals == 0) wait();
this.signals--;
}
}
代码对我来说似乎很奇怪,因为据我了解,信号量记录有多少可用资源,所以我们应该在 take() 时减少计数,在 release() 时增加计数(当然从一个限制)。
谁能让我更深入地了解计数方法和倒计数方法之间的区别?
【问题讨论】:
-
整个
take/release是倒退的 -release应该通知,而不是等待。是的,计数也是倒数。我建议你联系作者。
标签: java synchronization locking mutex semaphore