本例CyclicBarrier作用:线程全部进入等待后,启动一个函数。
【代码】
package com.hy.lab.cyclicbarrier; import java.util.concurrent.CyclicBarrier; /** * 借用杜琪峰《黑社会之龙城岁月》之人物关系诠释CyclicBarrier作用 */ public class CyclicDemo { static CyclicBarrier barrier=new CyclicBarrier(2, new Runnable() { @Override public void run() { System.out.println("双方到齐开始谈判"); } }); public static void main(String[] args){ Thread ale=new Thread(()->{ try{ System.out.println("阿乐准时到达."); barrier.await(); }catch(Exception ex){ ex.printStackTrace(); } }); Thread daD=new Thread(()->{ try{ System.out.println("大D因在吹鸡的酒吧逗留耽误十秒"); Thread.sleep(10*1000); System.out.println("大D姗姗来迟"); barrier.await(); }catch(Exception ex){ ex.printStackTrace(); } }); ale.start(); daD.start(); } }
【输出】
阿乐准时到达.
大D因在吹鸡的酒吧逗留耽误十秒
大D姗姗来迟
双方到齐开始谈判
END