スレッド同期フェンス

852 ワード

マルチスレッドでは、複数のスレッドが互いに協力してタスクを完了する必要がある場合が多い.これは、最初のスレッド間の調整を必要とします.フェンス(関所)はプログラム内の集合点に相当し、結果が中間で統合される必要がある場合によく使用され、スレッドが他のスレッドを待つ必要がある場合は、スレッドをフェンスに実行することができ、すべてのスレッドがこのフェンスに到達すると、フェンスは取り消されます.
1、CyclicBarrier
CyclicBarrier barrier =new CyclicBarrier(4)//      ,4      ,       

一般的なメソッドawaitこのフェンス上のスレッドでメソッドを呼び出すとresetがフェンスを初期状態にリセットするのを待つ
2、CountDownLatchは一定数のスレッドを待ってから、ラッチが開いて、スレッドは引き続き実行する
 cyclicbarrier    
    a、            
    b、           
    c、       ,  countdowm 0      

3、Semaphore(信号量)信号量メカニズムユーザがある資源に対して同時にアクセスするスレッドの数を制限する典型的な同期メカニズムであり、スレッドの同期問題を解決することができる信号量管理1つのライセンス(permit)集合であり、acquireによって1つのライセンスを取得することができ、ライセンスがなければ待つことができ、release方法を使用してライセンスを解放することができる