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

溫馨提示×

如何在Java父子線程中實現任務分配

小樊
82
2024-09-07 12:11:05
欄目: 編程語言

在Java中,可以使用ExecutorServiceFuture來實現父子線程之間的任務分配

  1. 創建一個ExecutorService實例,它將負責管理線程池。線程池的大小取決于你想要同時運行的線程數量。
int threadPoolSize = 4; // 可以根據需要調整線程池大小
ExecutorService executorService = Executors.newFixedThreadPool(threadPoolSize);
  1. 將子任務分配給線程池中的線程。為此,需要創建一個Callable實例,該實例表示要執行的任務。然后,使用executorService.submit()方法將任務提交給線程池。submit()方法將返回一個Future對象,表示異步計算的結果。
List<Future<String>> futures = new ArrayList<>();

for (int i = 0; i < 10; i++) { // 假設有10個子任務
    final int taskId = i;
    Callable<String> task = () -> {
        // 在這里執行子任務
        System.out.println("Task " + taskId + " is running by " + Thread.currentThread().getName());
        return "Task " + taskId + " completed";
    };
    Future<String> future = executorService.submit(task);
    futures.add(future);
}
  1. 等待所有子任務完成并獲取結果。可以使用Future.get()方法來獲取每個任務的結果。如果任務尚未完成,get()方法將阻塞,直到任務完成。
for (Future<String> future : futures) {
    String result = future.get(); // 獲取子任務的結果,如果任務尚未完成,則阻塞
    System.out.println(result);
}
  1. 關閉ExecutorService以釋放資源。
executorService.shutdown();

將上述代碼片段組合在一起,可以實現一個簡單的父子線程任務分配示例:

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;

public class ParentChildTaskAssignment {
    public static void main(String[] args) throws InterruptedException, ExecutionException {
        int threadPoolSize = 4;
        ExecutorService executorService = Executors.newFixedThreadPool(threadPoolSize);

        List<Future<String>> futures = new ArrayList<>();

        for (int i = 0; i < 10; i++) {
            final int taskId = i;
            Callable<String> task = () -> {
                System.out.println("Task " + taskId + " is running by " + Thread.currentThread().getName());
                return "Task " + taskId + " completed";
            };
            Future<String> future = executorService.submit(task);
            futures.add(future);
        }

        for (Future<String> future : futures) {
            String result = future.get();
            System.out.println(result);
        }

        executorService.shutdown();
    }
}

這個示例將創建一個固定大小的線程池,將10個子任務分配給線程池中的線程,并等待所有任務完成。然后,它將輸出每個任務的結果。

0
和田市| 原平市| 沁水县| 交城县| 宁明县| 吉林市| 水富县| 额尔古纳市| 陆良县| 阜新| 潍坊市| 台南市| 巴林左旗| 名山县| 商洛市| 奇台县| 青浦区| 黄石市| 华安县| 新密市| 垦利县| 淮南市| 明光市| 金坛市| 鄂托克旗| 乌拉特后旗| 东海县| 泽库县| 封丘县| 东台市| 砚山县| 汤阴县| 堆龙德庆县| 桑植县| 高淳县| 泸州市| 黄骅市| 平武县| 阿图什市| 天门市| 炉霍县|