1. 程式人生 > 實用技巧 >Java CountDownLatch JUC工具類

Java CountDownLatch JUC工具類

一、同步計數器CountDownLatch

  1. 定義:使一個執行緒等待其他執行緒各自執行完畢後再執行。

    是通過一個計數器來實現的,計數器初始值為執行緒的數量,每當一個執行緒執行完畢後,計數器的值就減1,當計數器的值為0時,表示所有的執行緒都執行完畢,然後在CountDownLatch上等待的執行緒就可以恢復執行接下來的任務,缺點是只能使用一次

  2. 常用方法說明

    A.CountDownLatch(int count); // 構造方法,建立一個值為count的計數器

    B.await(); // 阻塞當前執行緒,將當前執行緒加入阻塞佇列

    C.await(long timeout, TimeUnit unit); // 在timeout的時間之內阻塞當前執行緒,時間一過則當前執行緒可以執行

    D.countDown(); // 對計數器進行遞減1操作,當計數器遞減至0時,當前執行緒會去喚醒阻塞佇列裡的所有執行緒

  3. 使用場景

    A. 某一個執行緒在開始執行前等待n個執行緒執行完畢;

    B. 實現多個執行緒開始執行任務的最大並行性。

  4. 舉例