91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
黔江区| 自贡市| 定襄县| 客服| 秀山| 德江县| 灵川县| 晴隆县| 徐闻县| 巢湖市| 山丹县| 石门县| 鄂托克前旗| 余干县| 凤冈县| 岱山县| 通海县| 河北省| 淮滨县| 香格里拉县| 霍山县| 韶山市| 赤水市| 中阳县| 桑植县| 芦山县| 临澧县| 海南省| 北宁市| 灌南县| 龙游县| 江阴市| 文昌市| 余干县| 莱西市| 通许县| 唐海县| 布拖县| 长春市| 始兴县| 成安县|