Java中CyclicBarrier的用法分析
JAVA 分析 用法 CyclicBarrier
2023-06-13 09:14:47 时间
publicclassTestCyclicBarrier{
privatestaticfinalintTHREAD_NUM=5;
publicstaticclassWorkerThreadimplementsRunnable{
CyclicBarrierbarrier;
publicWorkerThread(CyclicBarrierb){
this.barrier=b;
}
@Override
publicvoidrun(){
//TODOAuto-generatedmethodstub
try{
System.out.println("Worker"swaiting");
//线程在这里等待,直到所有线程都到达barrier。
barrier.await();
System.out.println("ID:"+Thread.currentThread().getId()+"Working");
}catch(Exceptione){
e.printStackTrace();
}
}
}
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
CyclicBarriercb=newCyclicBarrier(THREAD_NUM,newRunnable(){
//当所有线程到达barrier时执行
@Override
publicvoidrun(){
//TODOAuto-generatedmethodstub
System.out.println("InsideBarrier");
}
});
for(inti=0;i<THREAD_NUM;i++){
newThread(newWorkerThread(cb)).start();
}
}
}
/*
以下是输出:
Worker"swaiting
Worker"swaiting
Worker"swaiting
Worker"swaiting
Worker"swaiting
InsideBarrier
ID:12Working
ID:8Working
ID:11Working
ID:9Working
ID:10Working
*/
1.CyclicBarrier初始化时规定一个数目,然后计算调用了CyclicBarrier.await()进入等待的线程数。当线程数达到了这个数目时,所有进入等待状态的线程被唤醒并继续。
2.CyclicBarrier就象它名字的意思一样,可看成是个障碍,所有的线程必须到齐后才能一起通过这个障碍。
3.CyclicBarrier初始时还可带一个Runnable的参数,此Runnable任务在CyclicBarrier的数目达到后,所有其它线程被唤醒前被执行。
相关文章
- java queue toarray_Java PriorityBlockingQueue toArray()用法及代码示例
- java scanner怎么用_Java中Scanner类的用法及使用步骤分享!「建议收藏」
- c++和java哪个好学_c++语言和Java语言,初学者该如何选择?「建议收藏」
- 【说站】java注解的本质分析
- java:commons-configuration2与spring的集成
- Java+Jsp+MySQL高校选课系统设计与实现(附源码下载地址)
- Java接口是什么意思_JAVA接口
- Java导出防止小数显示不全工具类详解编程语言
- Java Socket获取本机的InetAddress实例详解编程语言
- Java学习笔记之二十二解析接口在Java继承中的用法及实例分析详解编程语言
- java多线程系列(八)—CountDownLatch和CyclicBarrie详解编程语言
- java 标准输出与标准错误 out与 err 区别 用法 联系 java中的out与err区别 System.out和System.err的区别 System.out.println和System.err.println的区别 Java重定向System.out和System.err详解编程语言
- 在Linux下搭建完美的Java开发环境(linux搭建java开发环境)
- 数据库写入Java实现MySQL数据库的写入操作(java向mysql)
- 快速上手:Java连接Mongodb数据库(java连接mongodb数据库)
- 互操作Java与Redis缓存互操作实践(redis缓存与java)
- Java中的小知识点总结
- java操作oracle数据库示例