【问题标题】:Thread/Task execution framework in Java [closed]Java中的线程/任务执行框架[关闭]
【发布时间】:2017-02-23 08:29:44
【问题描述】:

假设我有 5 个任务 a、b、c、d 和 e。任务 b c d 依赖于 a 并且 e 依赖于 e,这 5 个任务组成一个 DAG。

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

【问题讨论】:

  • 要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决该问题所做的工作。
  • 我正在阅读 DAG,但后来发现它无关紧要。
  • 是的,有一个开源库:JDK。使用 Java 板载技术完全可行。

标签: java concurrency parallel-processing


【解决方案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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-27
    • 2010-10-14
    • 2012-04-25
    相关资源
    最近更新 更多