gpt4 book ai didi

java - 如何使用 AtomicBoolean 阻塞和等待

转载 作者:太空狗 更新时间:2023-10-29 22:54:05 25 4
gpt4 key购买 nike

我正在寻找一种暂停线程的方法。

我开始使用一个 boolean 标志(称为“暂停”),并用一个 while 循环(暂停)包装一个检查。

在 while 循环中有一个 Thread.wait() 来阻止执行。

我一直在研究 AtomicBoolean,除了不阻塞外,它似乎可以解决问题。

是否有具有 block 方法的 AtomicBoolean 的替代或扩展版本?

即类似于 AtomoicBoolean.get(false)AtomicBoolean.getFalse()

他们有一个阻塞队列,所以有一个阻塞值。

当前设置是:

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();
}
}
}

最佳答案

使用值为 1 的 CountDownLatch:

CountDownLatch conditionLatch = new CountDownLatch(1);

在你想要等待某些条件变为真的地方:

conditionLatch.await();

在你要设置条件为真的地方:

conditionLatch.countDown();

关于java - 如何使用 AtomicBoolean 阻塞和等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8213089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com