2015-10-27 67 views
-1

是否有辦法終止等待循環屏障完成的所有線程。 在我的情況下,我有3個線程,如果在A點見面,那麼只能進行,否則該過程應該被殺死。我已經使用循環屏障來檢查是否所有三個線程都在A點會議,如果是的話繼續,但如果即使1個線程失敗,那麼我怎麼能殺死所有線程使用此屏障。 Thet線程正在等待。我不想讓他們現在等待。如何使用循環屏障來終止線程

回答

0

當某個線程將在achiving「交匯點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屏障。