信号量简单的样本

时间:2012-03-26 07:46:10

标签: java multithreading

任何人都可以分享使用信号量的简单示例吗? 如果有可能在没有信号量的情况下解决任务的样本,然后用信号量来理解它的主要思想。

1 个答案:

答案 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