2012-03-26 10 views
17

कोई भी सेमफोर का उपयोग करने का सरल नमूना साझा कर सकता है? यदि यह सैमफोर के बिना किसी कार्य को हल करने का नमूना संभव है और फिर इसके मुख्य विचार को समझने के लिए सेमफोर के साथ।सेमफोर सरल नमूना

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() विधि एक संकेत है जो सेमाफोर में आंतरिक रूप से संग्रहीत किया जाता है भेजता है:

+1

की जावाडोक पर एक नज़र डालें 'java.util.concurrent.Semaphore' एक उदाहरण है। (और गूगल में कुछ और है, बीटीडब्ल्यू: * सेमफोर उदाहरण जावा *) –

उत्तर

20

यहाँ एक सरल सेमाफोर कार्यान्वयन है। release() विधि सिग्नल के लिए इंतजार कर रही है। सिग्नल फ्लैग प्राप्त होने पर फिर से साफ़ किया जाता है, और release() विधि निकलती है।

पढ़ें this article और इस example

संबंधित मुद्दे