-1

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

4

1 回答 1

1

当某个线程无法实现“交汇点 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在此屏障上使用时都会出现异常。

于 2015-10-27T10:35:17.307 回答