Java中任务并行库的等价性

我想在Java中没有相当于任务并行库(.NET 4.0)。 真的吗? .NET的这一特性提供了哪些改进,而Java并发却没有。

Java有java.util.concurrent包,还有fork / join框架 。 Fork / join 计划包含在Java 7中,但现在可以下载并与Java 6一起使用。

一本关于掌握Java并发性的好书是由Brian Goetz和其他人编写的Java Concurrency in Practice 。

Habanero-Java库 (HJ-lib)是Habanero-Java(HJ)的新库实现,Habanero-Java是在莱斯大学开发的教学并行编程模型。 HJ-lib能够表达许多不同forms的并行模式,包括数据并行性,流水线并行性,流并行性,循环并行性和分而治之的并行性。

HJ-lib在单个编程模型中集成了各种并行编程结构(例如,异步任务,期货,数据驱动任务,集合,障碍,阶段,事务,参与者),实现了这些结构的独特组合(例如,嵌套任务和演员并行的组合)。

HJ-lib使用lambda表达式构建,可以在任何Java 8 JVM上运行。 可以依靠外部字节码转换工具来实现较旧的JVM,以实现兼容性。 HJ运行时负责编排HJ任务的创建,执行和终止,并具有工作共享和工作窃取调度程序的function。

HJ-lib对于教育工作者来说也是一个很有吸引力的工具,可以从莱斯大学提供的二年级COMP 322课程中获得大量的教育资源。 这些资源也可用于了解库API。 API的Javadoc 也可用 。

这是一个简单的HelloWorld版本:

 import static edu.rice.hj.Module1.*; public class HelloWorld { public static void main(final String[] args) { launchHabaneroApp(() -> { finish(() -> { async(() -> System.out.println("Hello")); async(() -> System.out.println("World")); async(() -> System.out.println("in")); async(() -> System.out.println("HJ-lib")); }); }); } } 

各种平行构建体的其他实例可从COMP 322课程网站获得 。

是。 Java没有相当于任务并行库–TPL(.NET 4.0)。 你的问题是正确的(主要词 – NET 4.0)。 TPL是“共享” – 适用于任何 .NET应用程序的通用统一.NET库。 这意味着您可以使用真正的异步(非阻塞UI)方法为任何.NET应用程序(WPF,WinForms,Xamarin.Forms,ASP.NET,…)提供单一共享异步逻辑。 Java没有。 JavaFX有特殊的非阻塞Task类,Swing – 后台工作者,Android – 自己的方法。 …所以命名的util.concurrency Java包没有任何非freezable UI(JavaFX,Swing)解决方案。