1.CyclicBarrierループフェンス
原理
CyclicBarrierは、文字通り、循環(循環)バリア(バリア)を意味します。スレッドのグループがバリア(同期ポイントとも呼ばれます)に到達すると、スレッドのグループをブロックする必要があります。最後のスレッドがバリアに到達するまでバリアは開かず、バリアによってインターセプトされたすべてのスレッドは引き続き機能します。スレッドは、CyclicBarrierのawait()メソッドを介してバリアに入ります。
コード
パッケージcom.atguigu.thread;
インポートjava.util.concurrent.BrokenBarrierException;
インポートjava.util.concurrent.CyclicBarrier;
/ **
*
* @Description:TODO(ここでは1文でこのクラスの役割を説明しています)
* @author xialei
*
* CyclicBarrier
*文字通り、Cyclicが使用できるバリアを意味します。それがしなければならないのは、
*スレッドのグループがバリア(同期ポイントとも呼ばれる)に達したときにブロックされるようにします。
*最後のスレッドがバリアに到達するまでバリアは開きません。
*バリアによってインターセプトされたスレッドは引き続き機能します。
*スレッドはCyclicBarrierのawait()メソッドを介してバリアに入ります。
*
*ドラゴンボールを7つ集めてドラゴンを召喚する
* /
パブリッククラスCyclicBarrierDemo
{{
private static final int NUMBER = 7;
public static void main(String [] args)
{{
// CyclicBarrier(int partys、RunnablebarrierAction)
CyclicBarrier CyclicBarrier = new CyclicBarrier(NUMBER、()-> {System.out.println( "***** 7つのドラゴンボールを集めてドラゴンを召喚する");});
for(int i = 1; i <= 7; i ++){
new Thread(()-> {
{を試してください
System.out.println(Thread.currentThread()。getName()+ "\ tスタードラゴンボールが収集されます");
CyclicBarrier.await();
} catch(InterruptedException | BrokenBarrierException e){
// TODO自動生成されたcatchブロック
e.printStackTrace();
}
}、String.valueOf(i))。start();
}
}
}