Java中的线程/任务执行框架

时间:2017-02-23 08:29:44

标签: java concurrency parallel-processing

假设我有5个任务a,b,c,d和e。任务b c d依赖于a和e取决于e,5个任务由DAG组成。 enter image description here

直观地说,任务b c d应该并行运行。是否有任何开源库可以轻松实现这一目标?

1 个答案:

答案 0 :(得分:1)

JDK 1.8引入了CompletableFuture。它提供了一个流畅的api来组合线程执行。 (http://www.deadcoderising.com/java8-writing-asynchronous-code-with-completablefuture/

在您的示例中,它可以这样使用:

CompletableFuture futurA = CompletableFuture.runAsync(A);
CompletableFuture futurB = futurA.thenRun(B);
CompletableFuture futurC = futurA.thenRun(C);
CompletableFuture futurD = futurA.thenRun(D);
CompletableFuture.allOf(futureB, futureC, futureD).thenRun(E);