谁能分享使用信号量的简单示例?如果可能的话,可以在没有信号量的情况下解决任务,然后再通过信号量来了解任务的主要思想。
这是一个简单的信号量实现:
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()退出该方法。
take()
release()
阅读本文并看一下这个例子