中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

android countdownlatch如何使用

小樊
81
2024-11-22 17:07:52
欄目: 編程語言

CountDownLatch是Java中的一個同步輔助類,它允許一個或多個線程等待直到一組操作完成

  1. 導入必要的包:
import java.util.concurrent.CountDownLatch;
  1. 在主線程中創建一個CountDownLatch實例,并設置計數器值:
int numberOfThreads = 5; // 假設有5個子線程需要等待
CountDownLatch latch = new CountDownLatch(numberOfThreads);
  1. 創建子線程并在其中執行任務。在每個子線程完成任務后,調用latch.countDown()方法來減少計數器值:
for (int i = 0; i < numberOfThreads; i++) {
    new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                // 執行任務
                System.out.println(Thread.currentThread().getName() + " is working.");
                Thread.sleep(1000); // 假設每個子線程需要1秒鐘來完成任務

                // 任務完成后,減少計數器值
                latch.countDown();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }).start();
}
  1. 在主線程中調用latch.await()方法來阻塞主線程,直到計數器值變為0:
try {
    latch.await(); // 主線程將阻塞,直到所有子線程完成任務
} catch (InterruptedException e) {
    e.printStackTrace();
}
System.out.println("All threads have finished their tasks.");

將以上代碼整合到一個完整的示例中:

import java.util.concurrent.CountDownLatch;

public class CountDownLatchExample {
    public static void main(String[] args) {
        int numberOfThreads = 5; // 假設有5個子線程需要等待
        CountDownLatch latch = new CountDownLatch(numberOfThreads);

        for (int i = 0; i < numberOfThreads; i++) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        // 執行任務
                        System.out.println(Thread.currentThread().getName() + " is working.");
                        Thread.sleep(1000); // 假設每個子線程需要1秒鐘來完成任務

                        // 任務完成后,減少計數器值
                        latch.countDown();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }).start();
        }

        try {
            latch.await(); // 主線程將阻塞,直到所有子線程完成任務
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("All threads have finished their tasks.");
    }
}

運行這個示例,你會看到主線程在所有子線程完成任務之前阻塞,然后輸出"All threads have finished their tasks."。

0
泌阳县| 改则县| 涟水县| 中江县| 彰化县| 盐津县| 民权县| 西和县| 蒙阴县| 崇州市| 搜索| 建德市| 武隆县| 泗阳县| 新乡县| 土默特左旗| 苍山县| 新田县| 剑川县| 玉林市| 新化县| 海阳市| 双城市| 黑龙江省| 阿鲁科尔沁旗| 北流市| 华容县| 牡丹江市| 新疆| 巴中市| 青阳县| 黄浦区| 印江| 华容县| 巍山| 汶上县| 绥滨县| 开平市| 德令哈市| 京山县| 德钦县|