欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

枚举类与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"+"秦国统一中原");
    }
}
相关标签: java