相当于 Java 中的任务并行库
2022-09-04 02:30:06
我想Java中没有任务并行库(.NET 4.0)的等价物。这是真的吗?.NET 的此功能提供了哪些 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 课程网站。