并发编程系列---【CyclicBarrier】
2021/12/8 1:46:41
本文主要是介绍并发编程系列---【CyclicBarrier】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
作用:执行第一个参数指定的次数之后,最后一个线程执行第二个参数中的任务。
应用场景:在微服务中调用五个接口,确保5个接口执行完毕,再执行自己的业务逻辑。
import java.util.Random; import java.util.concurrent.CyclicBarrier; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class CyclicBarrierDemo { static class Task implements Runnable { CyclicBarrier barrier; public Task(CyclicBarrier barrier) { this.barrier = barrier; } @Override public void run() { try { Thread.sleep(new Random().nextInt(10) * 1000); System.out.println(Thread.currentThread().getName() + " 检查火箭"); barrier.await();//标记子任务执行完了,让count++ => 满足count => 调用CyclicBarrier的参数2任务 } catch (Exception e) { e.printStackTrace(); } } } public static void main(String[] args) { int count = 10; ExecutorService exec = Executors.newFixedThreadPool(count); CyclicBarrier barrier = new CyclicBarrier(5, new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName() + " -------------------发射火箭"); } }); for(int i = 0; i < count; i++) { exec.execute(new Task(barrier)); } exec.shutdown(); } }
这篇关于并发编程系列---【CyclicBarrier】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28pyqt 怎么打包整个项目-icode9专业技术文章分享
- 2024-09-28laravel Commands 创建带有参数的 Artisan 命令的步骤和示例-icode9专业技术文章分享
- 2024-09-28antd怎么实现渲染tiff图片-icode9专业技术文章分享
- 2024-09-28英文半角中划线和中文全角的中划线有什么区别-icode9专业技术文章分享
- 2024-09-28nvm npm 和node 他们之间有什么关系-icode9专业技术文章分享
- 2024-09-28Node Version Manager (nvm)使用教程-icode9专业技术文章分享
- 2024-09-28nvm命令太慢,是什么原因-icode9专业技术文章分享
- 2024-09-28Kotlin 如何增加、删除和修改 MutableStateFlow 中的值。-icode9专业技术文章分享
- 2024-09-28Kotlin的stateFlow.update 写法介绍-icode9专业技术文章分享
- 2024-09-28kotlin 怎么获取当前时间格式-icode9专业技术文章分享