CyclicBarrier使用

本文深入探讨了Java并发包中CyclicBarrier的作用与用法,通过实例演示了如何使用CyclicBarrier实现线程间的同步,特别展示了集齐五福并合成的场景,帮助读者理解CyclicBarrier在实际应用中的灵活性。

作用:一个线程组的线程需要等待所有线程完成任务后再继续执行下一次任务
构造器:
public CyclicBarrier(int parties, Runnable barrierAction)
public CyclicBarrier(int parties)

parties 是参与线程的个数
第二个构造方法有一个 Runnable 参数,这个参数的意思是最后一个到达线程要做的任务

模拟集齐五福,五福合成:
public class Demo01 {
public static void main(String[] args) {
CyclicBarrier cyclicBarrier=new CyclicBarrier(5,()->{
System.out.println(“五福合成!!!”);
}
);
for (int i = 1; i <= 5; i++) {
new Thread(() -> {
System.out.println(“集齐” +Thread.currentThread().getName());
try {
cyclicBarrier.await();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (BrokenBarrierException e) {
e.printStackTrace();
}
}, String.valueOf(FuEnum.getEach(i))).start();
}
}
}

enum FuEnum{
和谐福(1,“和谐福”),
爱国福(2,“爱国福”),
敬业福(3,“敬业福”),
友善福(4,“友善福”),
富强福(5,“富强福”);
FuEnum(Integer code, String message) {
this.code = code;
this.message = message;
}
private Integer code;
private String message;
public Integer getCode() {
return code;
}
public String getMessage() {
return message;
}
public static String getEach(int i){
FuEnum[] fuEnums = FuEnum.values();
for (FuEnum fuEnum : fuEnums) {
if(i==fuEnum.getCode()){
return fuEnum.getMessage();
}
}
return null;
}
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值