package com.pengshi.ThreadTest;
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
/**
* @description: CyclicBarrier 辅助类的理解与使用 循环阑珊 —— 循环阻塞
* 一个同步辅助类,它允许一组线程互相等待,知道某个公共屏障点
* 构造方法:
* public CyclicBarrier(int parties)
* public CyclicBarrier(int parties, Runnable barrierAction) 第二 Runnable线程定义的多一个线程,进行 parties 个 线程运行完毕
* 后进行 这个线程 的运行
*
* 其实就是定义 一个 允许 阻塞 parties 个线程的 保安,阻塞到 parties 个线程后,放行 barrierAction 的方法线程,最后释放 被阻塞的
* parties 个线程
*
* @projectName: Algorithm
* @see: com.pengshi.ThreadTest
* @author: pc
* @createTime: 2022/2/26 14:16
* @version: 1.0
*/
public class CyclicBarrierTest {
private static int number = 7;
public static void main(String[] args) {
CyclicBarrier cyclicBarrier = new CyclicBarrier(number, () -> {
System.out.println("循环结束");
});
for (int i = 0; i < 7; ++i) {
new Thread(() -> {
try {
System.out.println(Thread.currentThread().getName() + "加油");
cyclicBarrier.await();
System.out.println(Thread.currentThread().getName() + "塞住了");
} catch (BrokenBarrierException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}, String.valueOf(i)).start();
}
}
}
JUC —— 循环阑珊 CyclicBarrier
最新推荐文章于 2022-08-23 17:35:25 发布