亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用java的CountDownLatch線程計數器

發布時間:2021-11-15 09:44:39 來源:億速云 閱讀:180 作者:iii 欄目:大數據

本篇內容主要講解“如何使用java的CountDownLatch線程計數器”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何使用java的CountDownLatch線程計數器”吧!

CountDownLatch的使用

概念

countDownLatch這個類使一個線程等待其他線程各自執行完畢后再執行。

countDownLatch是通過一個計數器來實現的,計數器的初始值是線程的數量。每當一個線程執行完畢后,計數器的值就-1,當計數器的值為0時,表示所有線程都執行完畢,然后在閉鎖上等待的線程就可以恢復工作了。

使用場景

在一些時候由于數據庫連表查詢過于緩慢,并且無法在數據庫sql層進行優化,這時我們需要在代碼中使用線程去分頁查詢數據,多個線程都執行完畢后將數據封裝進一個list再進行返回,這時需要保證所有線程執行完畢后才能返回。

CountDownLatch的使用

// 首先創建一個線程計數器 構造參數為線程數量
CountDownLatch countDownLatch = new CountDownLatch(3);

// 創建一個結果集合
List<> list = new ArrayList<>();

// 循環分頁查詢
for (int i = 1; i <= 3; i++) {
    // executorService 是一個線程池對象,這里直接使用了,也可以通過new Thread(){ public void run() }.start();匿名內部類方式創建線程
    executorService.execute(() -> {
        // 調用查詢
        List<> list1 = mapper.find(i * 10, 10);
        // 將結果添加到集合中
        list.addAll(list1);
        // 執行完畢調用線程計數器-1 方法
        countDownLatch.countDown();
    });
}

try {
    // 調用await()方法的線程會被掛起,它會等待直到count值為0才繼續執行
    countDownLatch.await();
    System.out.println("返回數據添加完成");
} catch (Exception e) {
    e.printStackTrace();
}

CountDownLatch的所有方法

// countDownLatch類中只提供了一個構造器 count為計數值
public CountDownLatch(int count){};

// 調用await()方法的線程會被掛起,它會等待直到count值為0才繼續執行
public void await() throws InterruptedException {};
// 和await()類似,只不過等待一定的時間后count值還沒變為0的話就會繼續執行
public boolean await(long timeout, TimeUnit unit) throws InterruptedException {};
// 將count值減1
public void countDown() {};
// 返回當前計數
public long getCount(){};
// 返回計數器標識和當前計數
public String toString(){};

到此,相信大家對“如何使用java的CountDownLatch線程計數器”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

美姑县| 离岛区| 定襄县| 上杭县| 奈曼旗| 类乌齐县| 泸州市| 习水县| 青岛市| 天津市| 恩平市| 城步| 泌阳县| 屯门区| 双辽市| 盈江县| 唐海县| 博爱县| 揭西县| 富平县| 拉孜县| 班戈县| 中西区| 天祝| 兴业县| 天峻县| 阿坝县| 营山县| 辰溪县| 云南省| 仙游县| 安图县| 精河县| 宁陵县| 手机| 武功县| 吉木萨尔县| 巫山县| 怀安县| 肇庆市| 册亨县|