1700451803
1700451804
}
1700451805
1700451806
public void run(){
1700451807
1700451808
try{
1700451809
1700451810
Thread.sleep(new Random().nextInt(1000));
1700451811
1700451812
System.out.println(Thread.currentThread().getName()+”-到达汇合点”);
1700451813
1700451814
//到达汇合点
1700451815
1700451816
cb.await();
1700451817
1700451818
}catch(Exception e){
1700451819
1700451820
//异常处理
1700451821
1700451822
}
1700451823
1700451824
}
1700451825
1700451826
}
1700451827
1700451828
public static void main(String[]args)throws Exception{
1700451829
1700451830
//设置汇集数量,以及汇集完成后的任务
1700451831
1700451832
CyclicBarrier cb=new CyclicBarrier(2,new Runnable(){
1700451833
1700451834
public void run(){
1700451835
1700451836
System.out.println(“隧道已经打通!”);
1700451837
1700451838
}
1700451839
1700451840
});
1700451841
1700451842
//工人1挖隧道
1700451843
1700451844
new Thread(new Worker(cb),“工人1”).start();
1700451845
1700451846
//工人2挖隧道
1700451847
1700451848
new Thread(new Worker(cb),“工人2”).start();
1700451849
1700451850
}
1700451851
1700451852
在这段程序中,定义了一个需要等待2个线程汇集的CyclicBarrier关卡,并且定义了完成汇集后的任务(输出“隧道已经打通!”),然后启动了2个线程(也就是2个工人)开始执行任务。代码逻辑如下:
[
上一页 ]
[ :1.700451803e+09 ]
[
下一页 ]