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