Подтвердить что ты не робот

Семафор простой образец

Может ли кто-нибудь поделиться простым примером использования Семафора? Если возможно выборка решения задачи без семафора, а затем с помощью семафора, чтобы понять ее основную идею.

4b9b3361

Ответ 1

Вот простая реализация Semaphore:

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() завершается.

Прочитайте эту статью и посмотрите на этот пример