【发布时间】:2011-06-28 21:01:40
【问题描述】:
我有一堆执行计算的线程。它们使用CyclicBarrier“同步”。当任何线程的run()方法完成时,我希望所有其他线程在下次调用屏障上的await()时也退出。
到目前为止,我尝试过的所有操作要么在await() 调用时挂起,要么导致障碍被破坏。有什么建议吗?
编辑:这是(基本)代码:
public MyClass implements Runnable {
public void run() {
while (true) {
if (someCondition) {
// quit other threads when they call await()
return;
}
barrier.await();
}
}
【问题讨论】:
-
显示代码,这个很难回答。
-
@ryyst,我认为 CyclicBarrier 不会做你想做的事。
-
@Peter Lawrey:那我还应该选择什么。它实际上非常适合我的问题(除了戒烟部分)。
-
您是否充分同步,以使影响
someCondition的变量的更改对其他线程可见? -
显示更多代码,具体来说,什么是“someCondition”并显示其中所有内容的对象声明
标签: java concurrency cyclicbarrier