枚举类与CountDownLatch 的小练习
程序员文章站
2022-06-16 12:41:24
...
枚举类小练习
秦国扫六合
CountDownLatch
是允许一个或多个线程等待直到在其他线程中执行的一组操作完成的同步辅助。 CountDownLatch
用给定的计数初始化。 await
方法阻塞,直到由于countDown()
方法的调用而导致当前计数达到零,之后所有等待线程被释放,并且任何后续的await 调用立即返回。 这是一个一次性的现象 - 计数无法重置。public enum CountryEnum {
ONE(1,"齐"),TWO(2,"燕"),THREE(3,"赵"),FOUR(4,"韩"),FIVE(5,"魏"),SIX(6,"楚");
private Integer num;
private String nation;
public static CountryEnum foreach(int num){
CountryEnum[] values = CountryEnum.values();
for (CountryEnum element:values) {
if(num == element.getNum()){
return element;
}
}
return null;
}
CountryEnum() {
}
CountryEnum(Integer num, String nation) {
this.num = num;
this.nation = nation;
}
public Integer getNum() {
return num;
}
public void setNum(Integer num) {
this.num = num;
}
public String getNation() {
return nation;
}
public void setNation(String nation) {
this.nation = nation;
}
}
利用CountDownLatch
,多线程执行
public class CountDownLatchDemo {
public static void main(String[] args) {
CountDownLatch count = new CountDownLatch(6);
for (int i = 1; i <= 6; i++) {
new Thread(()->{
System.out.println(Thread.currentThread().getName()+"\t"+"国被灭");
count.countDown();
//此处foreach为枚举类中的方法
},CountryEnum.foreach(i).getNation()).start();
}
try {
count.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"\t"+"秦国统一中原");
}
}
上一篇: 盘点CES 2016上出现的国产新品手机
下一篇: 我看他(她)们可以称为内涵帝