【JUC】CountDownLatch和Java枚举的使用例子
2024-08-23 19:44:12
public enum CountryEnum {
ONE(1,"春"),
TWO(2,"夏"),
THREE(3,"秋"),
FOUR(4,"冬"); private Integer retCode;
private String reMessage; CountryEnum(int retCode, String reMessage) {
this.retCode = retCode;
this.reMessage = reMessage;
} public String getReMessage() {
return reMessage;
} public Integer getRetCode() {
return retCode;
} public static CountryEnum forEachCountryEnum(int index){
CountryEnum[] values = CountryEnum.values();
for(CountryEnum value: values){
if(index == value.getRetCode()){
return value;
}
}
System.out.println("not find " + index);
return null;
}
}
public class TestDemo {
public static void main(String[] args) throws InterruptedException {
CountDownLatch countDownLatch = new CountDownLatch(4);
for (int i = 1; i <= 4; i++) {
new Thread(()->{
System.out.println(Thread.currentThread().getName()+"天来了......");
countDownLatch.countDown();//countDownLatch减一个
}, CountryEnum.forEachCountryEnum(i).getReMessage()).start();
}
countDownLatch.await();//只有countDownLatch等于0才执行下一个线程(main线程)
System.out.println("一年过去了...");
}
}
输出信息:如果没有使用CountDownLatch,但是使用多线程进行输出,最后的“一年过去了...”的输出,可能随机穿插在四季的中间。
最新文章
- 火狐浏览器中event不起作用解决办法--记录(一)
- nginx 日志变量含义
- PHP对象转数组||PHP数组转对象
- php发送post请求到nodejs服务器
- 转:使用Nlog记录日志到数据库
- 【题解】【直方图】【Leetcode】Trapping Rain Water
- hdu3333(线段树)
- 我常用的VBS方法(QTP)
- 《Java数据结构与算法》笔记-CH5-链表-3双端链表
- [置顶] String StringBuffer StringBuilder的区别剖析
- 通常我们使用[NSDate date]方法得到的时间与当前时间不一致,如何解决?
- 给AVS添加描述(how to add a description to a video)
- C#(VS2008)服务编写-安装和部署
- MFC自绘控件学习总结第二贴
- 转载:每个C++开发者都应该使用的十个C++11特性
- Linux下重置MySQL的Root帐号密码
- 201521123081《java程序设计》 第14周学习总结
- js动态生成层方法 不懂得加QQ 2270312758
- 【JavaScript】DOM和BOM之我的理解
- 《Pro SQL Server Internals, 2nd edition》