Может ли кто-нибудь поделиться простым примером использования Семафора? Если возможно выборка решения задачи без семафора, а затем с помощью семафора, чтобы понять ее основную идею.
Семафор простой образец
Ответ 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()
завершается.
Прочитайте эту статью и посмотрите на этот пример