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

溫馨提示×

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
大渡口区| 齐齐哈尔市| 道真| 日土县| 宾川县| 喀喇沁旗| 泽库县| 桃园县| 蓬安县| 平武县| 兴宁市| 双牌县| 托克托县| 永和县| 绥芬河市| 库尔勒市| 榆中县| 怀化市| 宁安市| 万宁市| 和平县| 阜城县| 新津县| 淳化县| 宜黄县| 兴业县| 东方市| 高密市| 萨迦县| 平凉市| 马边| 洱源县| 陈巴尔虎旗| 大竹县| 论坛| 顺平县| 卢龙县| 定西市| 克拉玛依市| 治县。| 长白|