CountDownLatch 倒計時器

Count down英文釋義倒計數,latch爲門閂;顧名思義,所以這個類在java中就會用在所有線程都執行完畢之後在執行其他操作的場景,比如說火箭發射等;

CountDownLatch的構造函數接受一個整數作爲參數,即這個計數器的個數;且看下面CountDownLatch代碼:

package cn.yan.current;

import java.util.Random;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class TestCountDownLatch implements Runnable {
    static final CountDownLatch latch = new CountDownLatch(10);
    static final TestCountDownLatch test = new TestCountDownLatch();

    @Override
    public void run() {
        try {
            Thread.sleep(new Random().nextInt(10) * 1000);
            System.out.println("是否完成");
            latch.countDown();
        } catch (InterruptedException ex) {
            ex.printStackTrace();
        }
    }

    public static void main(String[] args) throws InterruptedException {
        ExecutorService executorService = Executors.newFixedThreadPool(10);

        for (int i = 0; i < 10; i++) {
            executorService.submit(test);
        }
        // 等待檢查
        latch.await();
        System.out.println("全部完成, go");
        // 執行完成之後關閉線程池
        executorService.shutdown();
    }
}

其執行結果爲:

/usr/jdk-9.0.1/bin/java -javaagent:/home/shuai/software/idea-IU-173.3727.127/lib/idea_rt.jar=44325:/home/shuai/software/idea-IU-173.3727.127/bin -Dfile.encoding=UTF-8 -classpath /home/shuai/IdeaProjects/cn-netty/out/production/classes cn.yan.current.TestCountDownLatch
是否完成
是否完成
是否完成
是否完成
是否完成
是否完成
是否完成
是否完成
是否完成
是否完成
全部完成, go

Process finished with exit code 0

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章