簡體   English   中英

並行處理多個任務(在Java-8中)

[英]Processing multiple tasks in parallel (in java-8)

這種方法有什么問題嗎?

public static void runinParallel(final List<Runnable> tasks){ 
    tasks.parallelStream().forEach(t -> t.run());
}

假設並行執行任務是安全的。

您可以執行類似的操作,其中包含任務列表和ExecutorService

List<Task> tasks = new ArrayList<Task>();
ExecutorService threadPool = Executors.newFixedThreadPool(5);

之后,添加要在並行線程中運行的所有任務,新的fixedThreadPool采用參數,該參數指定要並行運行的線程數,因此,如果您有10個任務,將首先運行5個任務,然后在該線程中完成執行將繼續執行下一個任務。 您還可以使用cachedThreadPool。

然后將這些任務提交給ExecutorService

for (Task t : tasks) {
    threadPool.submit(t);
}

然后那個謀殺犯關閉線程池。

threadPool.shutdown();

是的,你可以這么做。 這是一種更實用的處理方式,但請記住,您將無法控制所調用的線程。 考慮使用java.util.concurrent.Future而不是Runnable

       public static void runinParallel(final List<Future> tasks){ 
            tasks.parallelStream().forEach(t -> { threadPool.submit(t);
    // collect the tasks in a collection and use it for future references
 } );
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM