0
我有一個簡單的「播放/暫停」標誌。想象一下doer線程:Java中的布爾信號量
private final Thread backgroundDoer = new Thread(() -> {
while(true) {
doOperation();
playFlag.await();
}
})
因此,除非標誌爲false,否則等待標誌爲真,繼續執行操作。
我的問題是如何在Java中正確執行此操作。我無法真正使用Condition
,因爲我需要不斷從外部發出信號。現在我正在使用Semaphore
。當按下「play」時,我給它許多許可證,當按下暫停時,我將它們全部排走。儘管這看起來很笨重和愚蠢。有更好的方法嗎?
Wait ...'Semaphore'沒有'await()'方法。你有幾個後臺線程,這就是爲什麼你使用多個許可證? – Kayaman
等待那裏真的是我想要的僞代碼。只有一個後臺線程。這就是爲什麼我真的不想使用信號量,而只是一個條件,我可以設置一次,它不會阻止,直到我告訴它 – CarrKnight
這既不笨重也不愚蠢。這正是信號量應該做的。唯一值得注意的是,你需要計算信號量,而不是二進制,並且操作被調用\t acquire(),而不是await()。 –