我正在寻找一种暂停线程的方法。
我首先有效地使用布尔标志(称为“暂停”),并用 while 循环包装检查(暂停)。
在 while 循环内有一个Thread.wait()
来阻止执行。
我一直在看原子布尔值,除了不阻塞之外,这似乎可以解决问题。
是否有具有块方法的 AtomicBoolean 的替代或扩展版本?
即类似的东西AtomicBoolean.getFalse()
of AtomoicBoolean.get(false)
?
他们有一个阻塞队列,因此有一个阻塞值。
当前设置是:
while (paused.get()) {
synchronized (paused) {
try {
paused.wait();
} catch (Exception e) {
}
paused.notify();
}
}
with
public void pause() {
if (paused.compareAndSet(false, true)) {
synchronized (paused) {
paused.notify();
}
}
}
public void resume() {
if (paused.compareAndSet(true, false)) {
synchronized (paused) {
paused.notify();
}
}
}
Use a CountDownLatch
of 1:
CountDownLatch conditionLatch = new CountDownLatch(1);
在你想要等待某些条件成立的地方:
conditionLatch.await();
在你想要将条件设置为 true 的地方:
conditionLatch.countDown();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)