public class MainThread {
public static void main(String[] args)
????? throws InterruptedException, BrokenBarrierException, TimeoutException{
??????????? final int[] array = new int[2];
??????????? CyclicBarrier barrier = new CyclicBarrier(2,
????????????????? new Runnable() {//
在所有線程都到達
Barrier
時執行
????????????????? public void run() {
??????????????????????? System.out.println("Total is:"+(array[0]+array[1]));
????????????????? }
??????????? });???????????
??????????? //
啟動線程
??????????? new Thread(new ComponentThread(barrier, array, 0)).start();
??????????? new Thread(new ComponentThread(barrier, array, 1)).start();???
????? }?????
}
?
public class ComponentThread implements Runnable{
????? CyclicBarrier barrier;
????? int ID;
????? int[] array;
????? public ComponentThread(CyclicBarrier barrier, int[] array, int ID) {
??????????? this.barrier = barrier;
??????????? this.ID = ID;
??????????? this.array = array;
????? }
????? public void run() {
??????????? try {
????????????????? array[ID] = new Random().nextInt();
????????????????? System.out.println(ID+ " generates:"+array[ID]);
????????????????? //
該線程完成了任務等在
Barrier
處
????????????????? barrier.await();
??????????? } catch (BrokenBarrierException ex) {
????????????????? ex.printStackTrace();
??????????? } catch (InterruptedException ex) {
????????????????? ex.printStackTrace();
??????????? }
????? }
}
|