繁体   English   中英

Java中任务并行库的等价性

[英]Equivalent of Task Parallel Library in 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能够表达许多不同形式的并行模式,包括数据并行性,流水线并行性,流并行性,循环并行性和分而治之的并行性。

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

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

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

据我所知,Java中没有相应的东西。

我写了一个受TPL启发的Java Task库。 它不支持TPL的所有功能,但当时符合我的要求。

Github: https//github.com/BrunoMNDantas/TPL4J

Maven: https//mvnrepository.com/artifact/com.github.brunomndantas/tpl4j

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM