2012-03-26 67 views
17

任何人都可以分享使用信號量的簡單樣本嗎? 如果可能的話解決一個任務沒有信號量,然後用信號量來理解它的主要思想。信號簡單樣本

+1

的Javadoc,'java.util.concurrent.Semaphore'有一個例子。 (和谷歌有更多,順便說一句:*信號量的例子Java *) – 2012-03-26 07:55:12

回答

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