CyclicBarrier循环屏障
1.应用场景
CyclicBarrier应用于多个线程必须同时开始
2.代码
private static CyclicBarrier cyclicBarrier = new CyclicBarrier(5); public static void main(String[] args) { ExecutorService executorService = Executors.newCachedThreadPool(); for (int i = 0; i < 5; i++) { final int index = i; try{ Thread.sleep(1000); }catch (InterruptedException e){ e.printStackTrace(); } executorService.execute(new Runnable() { @Override public void run() { go(); } }); } executorService.shutdown(); } private static void go() { System.out.println(Thread.currentThread().getName()+"准备就绪"); try { cyclicBarrier.await(); System.out.println(Thread.currentThread().getName()+"开始执行"); } catch (InterruptedException e) { e.printStackTrace(); } catch (BrokenBarrierException e) { e.printStackTrace(); } }
作者:blanset
出处:https://www.cnblogs.com/blanset/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。