Java中的CyclicBarrier循环栅栏详解
一、是什么?
CyclicBarrier : 循环栅栏,用来进行线程协作,等待线程满足某个计数。
构造时设置计数个数,每个线程执行到某个需要“同步”的时刻调用 await() 方法进行等待,当等待的线程数满足计数个数时,继续执行
二、使用demo
public static void main(String[] args) {
ExecutorService service = Executors.newFixedThreadPool(3);
CyclicBarrier barrier = new CyclicBarrier(2, ()-> {
log.debug("task1, task2 finish...");
});
service.submit(() -> {
log.debug("task1 begin...");
sleep(1);
try {
barrier.await(); // 2-1=1
} catch (InterruptedException | BrokenBarrierException e) {
e.printStackTrace();
}
});
service.submit(() -> {
log.debug("task2 begin...");
sleep(2);
try {
barrier.await(); // 1-1=0
} catch (InterruptedException | BrokenBarrierException e) {
e.printStackTrace();
}
});
service.shutdown();
}
三、注意
CyclicBarrier 与 CountDownLatch 的主要区别在于 CyclicBarrier 是可以重用的
到此这篇关于Java中的CyclicBarrier循环栅栏详解的文章就介绍到这了,更多相关CyclicBarrier循环栅栏内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java中构造函数,set/get方法和toString方法使用及注意说明
这篇文章主要介绍了Java中构造函数,set/get方法和toString方法的使用及注意说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-01-01
已有的springcloud+mybatis项目升级为mybatis-plus的方法
这篇文章主要介绍了已有的springcloud+mybatis项目升级为mybatis-plus,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-03-03
SpringBoot3基于 Sa-Token 实现 API 接口签名校验实战
本文介绍了基于Spring Boot 3和Sa-Token框架实现API接口签名校验的解决方案,通过sa-token-sign模块提供开箱即用的签名校验功能,下面就来详细的介绍一下,感兴趣的可以了解一下2025-12-12
Java中@DateTimeFormat注解与@JsonFormat注解的使用方式
这篇文章主要介绍了Java中@DateTimeFormat注解与@JsonFormat注解的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-08-08
Java中containsKey 、contains方法的使用及注意事项详解
这篇文章主要介绍了Java中containsKey 、 contains方法的使用及注意事项的相关资料,两者分别用于检查键和元素存在性,所属接口不同,性能差异显著,文中通过代码介绍的非常详细,需要的朋友可以参考下2025-06-06


最新评论