任何人都可以分享使用信号量的简单示例吗? 如果有可能在没有信号量的情况下解决任务的样本,然后用信号量来理解它的主要思想。
答案 0 :(得分:20)
这是一个简单的信号量实现:
public class Semaphore {
private boolean signal = false;
public synchronized void take() {
this.signal = true;
this.notify();
}
public synchronized void release() throws InterruptedException{
while(!this.signal) wait();
this.signal = false;
}
}
take()
方法发送信号,该信号存储在信号量内部。 release()
方法等待信号。收到信号标志后再次清除,并退出release()
方法。
阅读this article并查看此example