Java线程同步

您所在的位置:网站首页 barrier的用法 Java线程同步

Java线程同步

#Java线程同步| 来源: 网络整理| 查看: 265

Java线程同步-栅栏(CyclicBarrier)

栅栏是一种同步工具,用于等待一组线程达到某个共同点后再同时继续执行。它的内部维护一个计数器和一个屏障点,当线程到达屏障点时,会阻塞等待其他线程到达。每一个线程到达屏障点后,计算器就减1,当所有线程都到达屏障点后,计算器为0,栅栏打开,所有线程可以继续执行。

模拟五个人一起开饭 public static void main(String[] args) { CyclicBarrier cyclicBarrier = new CyclicBarrier(5, () -> System.out.println("所有人等待完成,可以开始吃饭了")); for (int i = 0; i System.out.println(Thread.currentThread().getName() + ":我到了 等待其他人吃饭"); try { cyclicBarrier.await(); System.out.println(Thread.currentThread().getName() + ":开始吃饭了"); } catch (InterruptedException e) { throw new RuntimeException(e); } catch (BrokenBarrierException e) { throw new RuntimeException(e); } }).start(); } } 运行结果 Thread-0:我到了 等待其他人吃饭 Thread-4:我到了 等待其他人吃饭 Thread-3:我到了 等待其他人吃饭 Thread-2:我到了 等待其他人吃饭 Thread-1:我到了 等待其他人吃饭 所有人等待完成,可以开始吃饭了 Thread-1:开始吃饭了 Thread-0:开始吃饭了 Thread-2:开始吃饭了 Thread-3:开始吃饭了 Thread-4:开始吃饭了


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3