java多线程之CyclicBarrier的使用方法
程序员文章站
2024-02-21 08:02:58
java多线程之cyclicbarrier的使用方法
public class cyclicbarriertest {
public static...
java多线程之cyclicbarrier的使用方法
public class cyclicbarriertest { public static void main(string[] args) { executorservice service = executors.newcachedthreadpool(); final cyclicbarrier cb = new cyclicbarrier(3); for(int i=0;i<3;i++){ runnable runnable = new runnable(){ public void run(){ try { thread.sleep((long)(math.random()*10000)); system.out.println("线程" + thread.currentthread().getname() + "即将到达集合地点1,当前已有" + (cb.getnumberwaiting()+1) + "个已经到达," + (cb.getnumberwaiting()==2?"都到齐了,继续走啊":"正在等候")); cb.await(); thread.sleep((long)(math.random()*10000)); system.out.println("线程" + thread.currentthread().getname() + "即将到达集合地点2,当前已有" + (cb.getnumberwaiting()+1) + "个已经到达," + (cb.getnumberwaiting()==2?"都到齐了,继续走啊":"正在等候")); cb.await(); thread.sleep((long)(math.random()*10000)); system.out.println("线程" + thread.currentthread().getname() + "即将到达集合地点3,当前已有" + (cb.getnumberwaiting() + 1) + "个已经到达," + (cb.getnumberwaiting()==2?"都到齐了,继续走啊":"正在等候")); cb.await(); } catch (exception e) { e.printstacktrace(); } } }; service.execute(runnable); } service.shutdown(); } }
运行结果如下:
线程pool-1-thread-3即将到达集合地点1,当前已有1个已经到达,正在等候 线程pool-1-thread-1即将到达集合地点1,当前已有2个已经到达,正在等候 线程pool-1-thread-2即将到达集合地点1,当前已有3个已经到达,都到齐了,继续走啊 线程pool-1-thread-3即将到达集合地点2,当前已有1个已经到达,正在等候 线程pool-1-thread-1即将到达集合地点2,当前已有2个已经到达,正在等候 线程pool-1-thread-2即将到达集合地点2,当前已有3个已经到达,都到齐了,继续走啊 线程pool-1-thread-1即将到达集合地点3,当前已有1个已经到达,正在等候 线程pool-1-thread-3即将到达集合地点3,当前已有2个已经到达,正在等候 线程pool-1-thread-2即将到达集合地点3,当前已有3个已经到达,都到齐了,继续走啊
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
上一篇: java基础知识I/O流使用详解
下一篇: 详解前后端分离之Java后端