如何使用循环障碍

时间:2015-10-27 08:36:34

标签: java concurrency cyclicbarrier

有没有办法杀死所有等待循环障碍完成的线程。 在我的场景中,我有3个线程,如果在A点遇到,那么只有进行否则该进程应该被杀死。我已经使用循环屏障来检查所有三个线程是否在A点相遇,如果是,则继续,但如果即使1个线程失败,那么我如何使用此屏障杀死所有线程。这些线程正在等待。我不希望他们现在等。

1 个答案:

答案 0 :(得分:0)

如果某个线程在实现A"会合点A"时失败,它可以手动打破障碍

// Fail code
Thread.currentThread.interrupt(); // Set *interrupt* status for current thread
try {
    barrier.await(); // Because of interrupt status, this will immediately throw exception and mark barrier as broken.
} catch(InterruptedException e) {}
// Other finalization code if needed.

因此,任何其他线程在尝试在此障碍上使用BrokenBarrierException时都会遇到.await异常。