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

溫馨提示×

如何在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
贵定县| 雅江县| 临沂市| 甘南县| 双桥区| 嵊州市| 朝阳县| 和林格尔县| 山丹县| 云浮市| 澎湖县| 靖安县| 巍山| 九江县| 临泽县| 平顺县| 万年县| 海原县| 稷山县| 休宁县| 华安县| 林州市| 江陵县| 临朐县| 竹北市| 沙田区| 轮台县| 长武县| 忻城县| 进贤县| 黔南| 电白县| 菏泽市| 金湖县| 西乌珠穆沁旗| 镇平县| 聊城市| 亚东县| 建阳市| 兴仁县| 西盟|