나는 "재생/일시 정지"플래그가 간단합니다. 행위자 스레드를 상상해 플래그가있는 경우에 계속 사실로 플래그 대기, 거짓이 아닌 Java의 부울 세마포
private final Thread backgroundDoer = new Thread(() -> {
while(true) {
doOperation();
playFlag.await();
}
})
그래서 작업 일을 계속.
제 질문은 Java에서 제대로 수행하는 방법입니다. Condition
을 사용할 수는 없습니다. 외부에서 신호를 보내야하기 때문입니다. 지금은 Semaphore
을 사용 중입니다. "play"가 눌려지면 많은 허가를 얻습니다. 일시 정지를 누르면 나는 그것들을 모두 버렸습니다. 그것은 clunky와 어리석은 것처럼 보인다. 더 좋은 방법?
대기 ...'Semaphore'에는'await()'메소드가 없습니다. 몇 가지 배경 스레드가 있기 때문에 몇 가지 허가를 사용하는 이유는 무엇입니까? – Kayaman
내가 원하는 것을 실제로 의사 코드가 있습니다. 배경 스레드는 하나뿐입니다. 그래서 세마포어를 사용하지 않으려 고합니다. 단지 한 번 설정할 수있는 조건 일 뿐이지 만 – CarrKnight
에이 사실을 알리기 전까지는 차단되지 않을 것입니다. 이것은 clunky 나 멍청하지 않습니다. 이것은 정확하게 세마포어가 해야하는 것입니다. 유일한주의 사항은 바이너리가 아닌 세마포어 계산이 필요하며 작업은 \t acquire()가 아니라 await()입니다. –