gpt4 book ai didi

使用 CyclicBarrier 的 Java 循环线程

转载 作者:行者123 更新时间:2023-11-29 05:23:56 25 4
gpt4 key购买 nike

我有一个具有这种一般结构的程序:

init
create CyclicBarrier
initialise all threads, attaching to barrier
*start all threads*
wait for join
display stats


*start all threads*
perform calculation
await barrier

我的问题是我需要线程的 run() 方法继续循环直到满足特定条件,但在每次迭代后暂停以使所有线程同步。

我已经尝试将 Runnable 方法附加到屏障,但这最终需要重新创建和重新启动每个线程,这不是一个很好的解决方案。

我也尝试过使用 CyclicBarrier 的 reset() 方法,但这似乎只会导致现有线程出错,即使在所有线程完成后执行也是如此。

我的问题是:

-是否可以“重置”屏障并让屏障的所有线程都遵循与第一次调用 await() 之前相同的条件?

-或者我应该使用另一种方法来实现这一目标吗?

提前致谢

最佳答案

barrier.wait() 将暂停线程。屏障已经在主线程中,不需要另一个。在上面的算法中,您显示了在显示统计信息后重新启动的线程。您不需要这样做。如果最近唤醒的线程处于循环中,它们将再次返回 barrier.wait()。

关于使用 CyclicBarrier 的 Java 循环线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23478358/

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