2017-02-23 73 views
-2

假设我有5个任务a,b,c,d和e。任务b c d取决于a和e取决于e,这5个任务包含一个DAG。 enter image description hereJava中的线程/任务执行框架

直观上,任务b c d应该平行运行。任何开源库可以轻松实现吗?

+0

*问题,要求我们建议还是找一本书,工具,软件库,教程或其他异地资源是摘Stack Overflow的主题,因为它们倾向于吸引自以为是的答案和垃圾邮件。相反,请描述问题以及迄今为止解决问题的方法。* – GhostCat

+2

我正在阅读DAG,但后来发现它并不相关。 –

+0

是的,有一个开源的lib:JDK。完全可以使用Java板载技术。 – Fildor

回答

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);