`
bdk82924
  • 浏览: 567778 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Java CountDownLatch和CyclicBarrier 学习

 
阅读更多

CountDownLatch : 一个线程(或者多个), 等待另外N个线程完成某个事情之后才能执行。   CyclicBarrier        : N个线程相互等待,任何一个线程完成之前,所有的线程都必须等待。

 

 

 

CountDownLatch 是计数器, 线程完成一个就记一个, 就像 报数一样, 只不过是递减的.
而CyclicBarrier更像一个水闸, 线程执行就想水流, 在水闸处都会堵住, 等到水满(线程到齐)了, 才开始泄流.

 

 

/**  
 * Project Name:rop-client-P4Ux  
 * File Name:CyclicBarrierTest.java  
 * Package Name:com.zte.test  
 * Date:2015-4-15下午1:11:09  
 * Copyright (c) 2015,   All Rights Reserved.  
 *  
*/

package com.zte.test;

/**  
 * ClassName:CyclicBarrierTest <br/>  
 * Function: TODO ADD FUNCTION. <br/>  
 * Reason:   TODO ADD REASON. <br/>  
 * Date:     2015-4-15 下午1:11:09 <br/>  
 * @author    
 * @version    
 * @since    JDK 1.6  
 * @see        
 */
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class CyclicBarrierTest
{
    public static void main(String[] args)
    {
        ExecutorService service = Executors.newCachedThreadPool();
        final CyclicBarrier cb = new CyclicBarrier(3); //三个线程同时到达
        for (int i = 0; i < 3; i++)
        {
            Runnable runnable = new Runnable()
            {
                public void run()
                {
                    try
                    {
                        Thread.sleep((long) (Math.random() * 10000));
                        System.out.println("线程" + Thread.currentThread().getName() + "即将到达集合地点1,当前已有"
                                + (cb.getNumberWaiting() + 1) + "个已到达"
                                + (cb.getNumberWaiting() == 2 ? "都到齐了,继续走啊" : "正在等候"));
                        try
                        {
                            cb.await();
                        }
                        catch (BrokenBarrierException e)
                        {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        Thread.sleep((long) (Math.random() * 10000));
                        System.out.println("线程" + Thread.currentThread().getName() + "即将到达集合地点2,当前已有"
                                + (cb.getNumberWaiting() + 1) + "个已到达"
                                + (cb.getNumberWaiting() == 2 ? "都到齐了,继续走啊" : "正在等候"));
                        try
                        {
                            cb.await();
                        }
                        catch (BrokenBarrierException e)
                        {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        Thread.sleep((long) (Math.random() * 10000));
                        System.out.println("线程" + Thread.currentThread().getName() + "即将到达集合地点3,当前已有"
                                + (cb.getNumberWaiting() + 1) + "个已到达"
                                + (cb.getNumberWaiting() == 2 ? "都到齐了,继续走啊" : "正在等候"));
                        try
                        {
                            cb.await();
                        }
                        catch (BrokenBarrierException e)
                        {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                    catch (InterruptedException e)
                    {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            };
            service.execute(runnable);
        }
        service.shutdown();
    }
}

 

 

分享到:
评论

相关推荐

    Screenshot_20250201_221248_com.tencent.tmgp.pubgmhd.jpg

    Screenshot_20250201_221248_com.tencent.tmgp.pubgmhd.jpg

    e2studio开发RA4M2(2)-Programmer烧录程序

    e2studio开发RA4M2(2)---Programmer烧录程序 CSDN文字教程:https://coremaker.blog.csdn.net/article/details/144953944 B站教学视频:https://www.bilibili.com/video/BV1tQC6YkEBn/ Renesas Flash Programmer是一款支持开发和批量生产阶段写入的软件,具有简单的 GUI,即使是初学者也能简单操作进行写入。 运行环境支持Windows、Linux、macOS。 这里使用Renesas Flash Programmer软件进行下载。 硬件准备 首先需要准备一个开发板,这里我准备的是自己绘制的开发板,需要的可以进行申请。 主控为R7FA4M2AD3CFL#AA0

    Java毕业设计-ssm-vue-订餐系统(源码+sql脚本+32页零基础部署图文详解+31页论文+环境工具+教程+视频+模板).zip

    资源说明: 1:csdn平台资源详情页的文档预览若发现'异常',属平台多文档切片混合解析和叠加展示风格,请放心使用。 2:32页图文详解文档(从零开始项目全套环境工具安装搭建调试运行部署,保姆级图文详解),旨在为更多的人甚至零基础的人也能运行、使用和学习。 3:配套毕业论文,万字长文,word文档,支持二次编辑。 4:范例参考答辩ppt,pptx格式,支持二次编辑。 5:工具环境、ppt参考模板、相关电子教程、视频教学资源分享。 6:资源项目源码均已通过严格测试验证,保证能够正常运行,本项目仅用作交流学习参考,请切勿用于商业用途。 7:项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通。 内容概要: 本系统基于B/S网络结构,在IDEA中开发。服务端用Java并借ssm框架(Spring+SpringMVC+MyBatis)搭建后台。用MySQL存储数据,可靠性强。 能学到什么: 使用ssm搭建后台。VUE框架构建前端交互界面、前后端数据交互、MySQL管理数据、从零开始环境搭建、调试、运行、打包、部署流程。

    Java毕业设计-ssm-vue-计算机公共基础课程mooc教学平台(源码+sql脚本+32页零基础部署图文详解+环境工具+教程+视频+模板).zip

    资源说明: 1:csdn平台资源详情页的文档预览若发现'异常',属平台多文档切片混合解析和叠加展示风格,请放心使用。 2:32页图文详解文档(从零开始项目全套环境工具安装搭建调试运行部署,保姆级图文详解),旨在为更多的人甚至零基础的人也能运行、使用和学习。 3:范例参考毕业论文,万字长文,word文档,支持二次编辑。 4:范例参考答辩ppt,pptx格式,支持二次编辑。 5:工具环境、ppt参考模板、相关电子教程、视频教学资源分享。 6:资源项目源码均已通过严格测试验证,保证能够正常运行,本项目仅用作交流学习参考,请切勿用于商业用途。 7:项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通。 内容概要: 本系统基于B/S网络结构,在IDEA中开发。服务端用Java并借ssm框架(Spring+SpringMVC+MyBatis)搭建后台。用MySQL存储数据,可靠性强。 能学到什么: 使用ssm搭建后台。VUE框架构建前端交互界面、前后端数据交互、MySQL管理数据、从零开始环境搭建、调试、运行、打包、部署流程。

    rsyslog-gnutls-8.24.0-57.el7-9.3.x64-86.rpm.tar.gz

    1、文件内容:rsyslog-gnutls-8.24.0-57.el7_9.3.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/rsyslog-gnutls-8.24.0-57.el7_9.3.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    Java毕业设计-ssm-jsp-单位人事管理系统(源码+sql脚本+32页零基础部署图文详解+31页论文+环境工具+教程+视频+模板).zip

    资源说明: 1:csdn平台资源详情页的文档预览若发现'异常',属平台多文档切片混合解析和叠加展示风格,请放心使用。 2:32页图文详解文档(从零开始项目全套环境工具安装搭建调试运行部署,保姆级图文详解),旨在为更多的人甚至零基础的人也能运行、使用和学习。 3:配套毕业论文,万字长文,word文档,支持二次编辑。 4:范例参考答辩ppt,pptx格式,支持二次编辑。 5:工具环境、ppt参考模板、相关电子教程、视频教学资源分享。 6:资源项目源码均已通过严格测试验证,保证能够正常运行,本项目仅用作交流学习参考,请切勿用于商业用途。 7:项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通。 内容概要: 本系统基于B/S网络结构,在IDEA中开发。服务端用Java并借ssm框架(Spring+SpringMVC+MyBatis)搭建后台。用MySQL存储数据,可靠性强。 能学到什么: 使用ssm搭建后台。学习使用jsp、html构建交互界面、前后端数据交互、MySQL管理数据、从零开始环境搭建、调试、运行、打包、部署流程。

    基于TransUnet和Swin-Unet 实现的医学图像语义分割对比项目:腹部器官多类别图像语义分割

    数据集采用【腹部器官多类别图像语义分割,dice约为0.8,iou为0.7】,数据在data目录下,划分了训练集和验证集。【代码可一键运行】 【介绍】分割网络为TransUnet和Swin-Unet (可以自行选择),学习率采用cos余弦退火算法。如果想在大尺度进行训练,修改base-size参数即可,优化器采用了AdamW。评估的指标为dice、iou、recall、precision、f1、pixel accuracy等等,代码会对训练和验证集进行评估,结果保存runs下的json文件中。 网络推理的时候采用可视化推理,运行infer脚本会打开本地网页,上传图片即可进行推理 更多医学图像语义分割实战:https://blog.csdn.net/qq_44886601/category_12816068.html 图像分类、语义分割网络改进:https://blog.csdn.net/qq_44886601/category_12858320.html

    qt5-qtimageformats-5.9.7-2.el7-9.x64-86.rpm.tar.gz

    1、文件内容:qt5-qtimageformats-5.9.7-2.el7_9.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/qt5-qtimageformats-5.9.7-2.el7_9.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    电热综合能源系统优化调度模型:计及绿证交易、碳排放与智能楼宇微网协同调度策略,计及绿证交易及碳排放的含智能楼宇微网优化调度模型 摘要:代码主要做的是电热综合能源系统的优化调度问题,在传统的含风光储火的

    电热综合能源系统优化调度模型:计及绿证交易、碳排放与智能楼宇微网协同调度策略,计及绿证交易及碳排放的含智能楼宇微网优化调度模型 摘要:代码主要做的是电热综合能源系统的优化调度问题,在传统的含风光储火的微网基础上,加入电动汽车以及智能楼宇单元,组成更加复杂的微网调度模型,并考虑微网参与碳市场以及绿色证书交易市场,并对交易结果进行了量化。 结果非常清晰,出图效果也非常清楚,具体可以看下图。 ,智能楼宇微网优化调度模型; 风光储火微网; 电动汽车; 碳市场交易; 绿证交易市场。,基于智能楼宇与绿色交易的微网优化调度模型研究

    Java毕业设计-ssm-jsp-电动车上牌管理系统(源码+sql脚本+32页零基础部署图文详解+29页论文+环境工具+教程+视频+模板).zip

    资源说明: 1:csdn平台资源详情页的文档预览若发现'异常',属平台多文档切片混合解析和叠加展示风格,请放心使用。 2:32页图文详解文档(从零开始项目全套环境工具安装搭建调试运行部署,保姆级图文详解),旨在为更多的人甚至零基础的人也能运行、使用和学习。 3:配套毕业论文,万字长文,word文档,支持二次编辑。 4:范例参考答辩ppt,pptx格式,支持二次编辑。 5:工具环境、ppt参考模板、相关电子教程、视频教学资源分享。 6:资源项目源码均已通过严格测试验证,保证能够正常运行,本项目仅用作交流学习参考,请切勿用于商业用途。 7:项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通。 内容概要: 本系统基于B/S网络结构,在IDEA中开发。服务端用Java并借ssm框架(Spring+SpringMVC+MyBatis)搭建后台。用MySQL存储数据,可靠性强。 能学到什么: 使用ssm搭建后台。学习使用jsp、html构建交互界面、前后端数据交互、MySQL管理数据、从零开始环境搭建、调试、运行、打包、部署流程。

    relaxngcc-1.12-6.el7.x64-86.rpm.tar.gz

    1、文件内容:relaxngcc-1.12-6.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/relaxngcc-1.12-6.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    中文姓氏1074个,按照TF排序

    中文姓氏1074个,按照TF排序。

    REFCONV RE-PARAMETERIZED REFOCUSING CONVOLUTION FOR POWERFUL CONVNETS.zip

    REFCONV RE-PARAMETERIZED REFOCUSING CONVOLUTION FOR ,含有完整的代码和论文POWERFUL CONVNETS,含有完整的代码和论文

    Matlab Simulink下的锂电池主动均衡仿真:基于电压与变压器型均衡电路设计解析,matlab simulink仿真设计 锂电池主动均衡仿真(基于电压) 变压器型均衡电路(四节电池为例) 1

    Matlab Simulink下的锂电池主动均衡仿真:基于电压与变压器型均衡电路设计解析,matlab simulink仿真设计 锂电池主动均衡仿真(基于电压) 变压器型均衡电路(四节电池为例) 1.基于电压器的均衡电路(整理变压器) (需要改价 ) 本店还有buck-boost电路均衡 开关电容均衡电路 双向反激电路 双层准谐振仿真模型 ,MATLAB Simulink仿真设计; 锂电池主动均衡仿真(基于电压); 变压器型均衡电路(四节电池); 均衡电路(基于整理变压器); 改价; Buck-Boost电路均衡; 开关电容均衡电路; 双向反激电路; 双层准谐振仿真模型。,基于Matlab Simulink的锂电池主动均衡仿真:变压器型均衡电路设计及其对比研究

    Java毕业设计-ssm-vue-校园代购服务订单管理系统(源码+sql脚本+32页零基础部署图文详解+36页论文+环境工具+教程+视频+模板).zip

    资源说明: 1:csdn平台资源详情页的文档预览若发现'异常',属平台多文档切片混合解析和叠加展示风格,请放心使用。 2:32页图文详解文档(从零开始项目全套环境工具安装搭建调试运行部署,保姆级图文详解),旨在为更多的人甚至零基础的人也能运行、使用和学习。 3:配套毕业论文,万字长文,word文档,支持二次编辑。 4:范例参考答辩ppt,pptx格式,支持二次编辑。 5:工具环境、ppt参考模板、相关电子教程、视频教学资源分享。 6:资源项目源码均已通过严格测试验证,保证能够正常运行,本项目仅用作交流学习参考,请切勿用于商业用途。 7:项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通。 内容概要: 本系统基于B/S网络结构,在IDEA中开发。服务端用Java并借ssm框架(Spring+SpringMVC+MyBatis)搭建后台。用MySQL存储数据,可靠性强。 能学到什么: 使用ssm搭建后台。VUE框架构建前端交互界面、前后端数据交互、MySQL管理数据、从零开始环境搭建、调试、运行、打包、部署流程。

    qt5-qt3d-devel-5.9.7-1.el7.x64-86.rpm.tar.gz

    1、文件内容:qt5-qt3d-devel-5.9.7-1.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/qt5-qt3d-devel-5.9.7-1.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    信息融合项目MATLAB仿真:基于PDA与JPDA算法的杂波环境下多目标跟踪研究,信息融合项目matlab仿真代码及说明 针对杂波环境多目标跟踪问题,设计目标稀疏的目标运动场景,分别采用PDA和JPD

    信息融合项目MATLAB仿真:基于PDA与JPDA算法的杂波环境下多目标跟踪研究,信息融合项目matlab仿真代码及说明 针对杂波环境多目标跟踪问题,设计目标稀疏的目标运动场景,分别采用PDA和JPDA方法,对目标的状态进行有效估计和实时跟踪。 以航迹丢失百分率,位置状态估计精度,计算效率为指标,比较两种算法的优劣性。 主要工作如下: (1)对PDA和JPDA算法进行描述,分别详细介绍了两种算法的核心思想和实现过程; (2)设置仿真场景,采用常速运动模型,同时设置杂波环境下目标个数为2个。 采用PDA和JPDA算法对杂波下的目标进行航迹跟踪。 (3)以RMSE,ARMSE,计算时间,航迹丢失百分率为对比性能指标,对两种算法进行了分析和总结。 ,核心关键词:信息融合项目; MATLAB仿真; 杂波环境多目标跟踪; PDA算法; JPDA算法; 目标运动场景; 状态估计; 实时跟踪; 航迹丢失百分率; 位置状态估计精度; 计算效率; 仿真场景设置; 常速运动模型; 杂波环境; RMSE; ARMSE; 计算时间。,Matlab仿真:杂波环境下PDA与JPDA多目标跟踪算法比较研究

    qt3-ODBC-3.3.8b-51.el7.x64-86.rpm.tar.gz

    1、文件内容:qt3-ODBC-3.3.8b-51.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/qt3-ODBC-3.3.8b-51.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    CarSim与Simulink联合仿真:基于MPC的动态规划路径实现超车换道操作指南与模型说明文档,视频演示效果展示 ,CarSim与Simulink联合仿真,实时检测,动态规划路径,实现超车道,基于

    CarSim与Simulink联合仿真:基于MPC的动态规划路径实现超车换道操作指南与模型说明文档,视频演示效果展示。,CarSim与Simulink联合仿真,实时检测,动态规划路径,实现超车道,基于mpc,模型预测控制实现,距离效果见视频 提供carsim参数配置文件,导入即可运行 提供simulink模型文件 提供运行指导视频 提供模型说明文档 ,CarSim; Simulink联合仿真; 实时检测; 动态规划路径; 超车换道; MPC(模型预测控制); 距离效果; 参数配置文件; Simulink模型文件; 运行指导视频; 模型说明文档。,"CarSim与Simulink联合仿真:实现超车换道MPC模型预测控制"

    Java毕业设计-ssm-vue-网络教学平台(源码+sql脚本+32页零基础部署图文详解+38页论文+环境工具+教程+视频+模板).zip

    资源说明: 1:csdn平台资源详情页的文档预览若发现'异常',属平台多文档切片混合解析和叠加展示风格,请放心使用。 2:32页图文详解文档(从零开始项目全套环境工具安装搭建调试运行部署,保姆级图文详解),旨在为更多的人甚至零基础的人也能运行、使用和学习。 3:配套毕业论文,万字长文,word文档,支持二次编辑。 4:范例参考答辩ppt,pptx格式,支持二次编辑。 5:工具环境、ppt参考模板、相关电子教程、视频教学资源分享。 6:资源项目源码均已通过严格测试验证,保证能够正常运行,本项目仅用作交流学习参考,请切勿用于商业用途。 7:项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通。 内容概要: 本系统基于B/S网络结构,在IDEA中开发。服务端用Java并借ssm框架(Spring+SpringMVC+MyBatis)搭建后台。用MySQL存储数据,可靠性强。 能学到什么: 使用ssm搭建后台。VUE框架构建前端交互界面、前后端数据交互、MySQL管理数据、从零开始环境搭建、调试、运行、打包、部署流程。

Global site tag (gtag.js) - Google Analytics