gpt4 book ai didi

java - 特定情况的并发机制

转载 作者:行者123 更新时间:2023-12-02 06:45:12 24 4
gpt4 key购买 nike

情况是这样的(看下面的EDIT2):

SITUATION

我有一种方法(方法A),它会一个接一个地循环任务组件,并在它们满足条件时删除它们,这将触发上述问题正在处理的事件(我的小方法链式 react )。

我有一个 AtomicBoolean,当该链正在执行时,它将为 true;当它完成或不执行时,它将变为 false,方法 A 可以访问该值。

现在,我知道方法 A 到底在哪里触发事件(它会在删除对象时触发它),因此我可以从方法 A 手动将 AtomicBoolean 设置为 true。

现在我需要做的就是暂停该方法,直到 AtomicBoolean 变为 false。

我无法使用 PropertyChangeListener,因为我可以将它放在方法中间并使用它来暂停它,我必须将我的方法分解为较小的方法,但我不能这样做,

如果 Lock 类可以在这里工作,我不知道如何工作。

基本上,我需要的是:

while (AtomicBoolean)
{
Thread.sleep(0);
}

但是以更智能的形式编写,因此不会折磨处理器。

最佳答案

使用 CountDownLatch ( http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html ) 并在检查线程完成后触发它。

线程 1(执行工作):

CountDownLatch signal = new CountDownLatch(1);
// ...
signal.countDown();

线程 2(等待其他线程完成其工作):

//..
// await will block until the other thread triggers countDown
signal.await();
//done

关于java - 特定情况的并发机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18728612/

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