【发布时间】:2012-01-03 00:39:22
【问题描述】:
我正在寻找一种暂停线程的方法。
我从有效地使用布尔标志(称为“暂停”)开始,并使用 while 循环(暂停)包装检查。
在 while 循环中有一个 Thread.wait() 来阻止执行。
我一直在研究 AtomicBoolean,除了不会阻塞之外,它似乎可以解决问题。
是否存在具有块方法的 AtomicBoolean 的替代或扩展版本?
即AtomicBoolean.getFalse() 之类的 AtomoicBoolean.get(false)?
他们有一个阻塞队列,所以有一个阻塞值。
当前设置是:
while (paused.get()) {
synchronized (paused) {
try {
paused.wait();
} catch (Exception e) {
}
paused.notify();
}
}
与
public void pause() {
if (paused.compareAndSet(false, true)) {
synchronized (paused) {
paused.notify();
}
}
}
public void resume() {
if (paused.compareAndSet(true, false)) {
synchronized (paused) {
paused.notify();
}
}
}
【问题讨论】:
标签: java concurrency atomic java.util.concurrent