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多线程CyclicBarrier的使用案例,让线程起步走,包括了java多线程CyclicBarrier的使用案例,让线程起步走的使用技巧和注意事项,需要的朋友参考一下 1、CyclicBarrier: 一个同步辅助类,用于协调多个子线程,让多个子线程在这个屏障前等待,直到所有子线程都到达了这个屏障时,再一起继续执行后面的动作。 2、使用场景举例: 年末公司组织团建,要求每一
问题内容: 我正在阅读以下链接 http://java-latte.blogspot.in/2013/10/cyclicbarrier- in-java-concurrency.html 。 在示例1中,主要方法CyclicBarrier被重用,而没有调用 reset 方法。 我运行了示例,它运行良好。因此,我想知道方法的用途是什么。什么时候应该叫它?还是我们完全需要调用它? 问题答案: A 是循
本文向大家介绍Java并发实例之CyclicBarrier的使用,包括了Java并发实例之CyclicBarrier的使用的使用技巧和注意事项,需要的朋友参考一下 最近一直整并发这块东西,顺便写点Java并发的例子,给大家做个分享,也强化下自己记忆,如果有什么错误或者不当的地方,欢迎大家斧正。 CyclicBarrier是一种多线程并发控制实用工具,和CountDownLatch非常类似,它也可以
本文向大家介绍Java多线程——之一创建线程的四种方法,包括了Java多线程——之一创建线程的四种方法的使用技巧和注意事项,需要的朋友参考一下 1.实现Runnable接口,重载run(),无返回值 2.继承Thread类,复写run() 使用时通过调用Thread的start()(该方法是native),再调用创建线程的run(),不同线程的run方法里面的代码交替执行。 不足:由于java为单
本文向大家介绍java多线程编程之Synchronized块同步方法,包括了java多线程编程之Synchronized块同步方法的使用技巧和注意事项,需要的朋友参考一下 文章分享了4个例子对synchronized的详细解释 1、是否加synchronized关键字的不同 加了synchronized关键字的输出结果如下 会先输出一组0-4,接着再输出下一组,两个线程顺序执行 excute:0
本文向大家介绍Java多线程之多线程异常捕捉,包括了Java多线程之多线程异常捕捉的使用技巧和注意事项,需要的朋友参考一下 一:为什么要单独讲多线程的异常捕捉呢? 先看个例子: 在run中手动抛出了一个运行时异常,在main中启动线程,catch语句块中捕捉下异常,捕捉到打印一句话。运行结果如下图: 发现异常被抛到了控制台,没有打印catch块中的语句。 结论:多线程运行不能按照顺