concurrent.util包下的常用類

CyclicBarrier使用:

    假設一個場景:每個線程代表一個運動員,當運動員都準備好後才一起出發,只要有一個人沒有準備好就一起等待。
    CyclicBarrier cb = new CyclicBarrier(3);
    ExecutorService pool = Executors.newFixedThreadPool(3);
    pool.submit(new Thread(new Runnable() {  run(){

            cb.await();
    }});
    pool.submit(new Thread(new Runnable() {  run(){

            cb.await();
    }});

    pool.submit(new Thread(new Runnable() {  run(){

            cb.await();
    }});

    pool.shutdown();  //同時啓動

如果線程數小於3會一直等待下去

CoutDwonLacth使用:

    經常用於監聽某些初始化操作,主線程可以通過await()方法直接進入阻塞狀態,其他線程進行初始化,初始化完畢後通過countdown()喚醒主線程繼續執行操作。

Callable和Future的結合使用:

    其實就是jdk基於future模式的一個封裝,當主線程需要數據又不立即需要使用時,主線程繼續向下執行,future模式會悄悄另起線程去執行真正的任務,執行完畢後放進FutureStak類中,當主線程需要數據時就從該類中取出。體現的是異步加載的策略。

發佈了23 篇原創文章 · 獲贊 13 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章