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()。 –