【发布时间】:2014-06-22 02:27:14
【问题描述】:
我有一个具有这种一般结构的程序:
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() 之前相同的条件?
-或者我应该使用另一种方法来实现这一点吗?
提前致谢
【问题讨论】:
-
将
while(true)粘贴到Thread中。await()循环结束处的屏障。当所有线程都完成后,reset()屏障和整个过程重新开始......
标签: java multithreading wait barrier cyclicbarrier