2012-03-26 5 views
17

誰でも簡単なセマフォのサンプルを共有できますか? セマフォなしでタスクを解決し、セマフォを使用してその主なアイデアを理解することができれば可能です。ここでセマフォ単純サンプル

+1

でjava.util.concurrent.Semaphore' 'のJavadocを見ては例があります。 (そしてGoogleにはもう少しbtwがあります:*セマフォの例java *) –

答えて

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