gpt4 book ai didi

java - Java 中等效的并行扩展

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:18:53 24 4
gpt4 key购买 nike

我有一些在 .Net 开发中使用并行扩展的经验,但我一直在考虑用 Java 做一些工作,这些工作将受益于易于使用的并行库。 JVM 是否提供任何可与并行扩展相媲美的工具?

最佳答案

您应该熟悉 java.util.concurrent包裹。它具有用于并行编程的简单而强大的原语,这些原语是高级库的基础。这种库的一个例子是 Functional Java , 其中有 an easy-to-use module for parallel programming .

例如,这里是使用 Functional Java 编写的规范 MapReduce 示例。它计算一组文档中的单词数,假设文档是字符流:

public static long countWords(final List<Stream<Character>> documents,
final ParModule m)
{ return m.parFoldMap(documents,
new F<Stream<Character>, Long>()
{ public Long f(final Stream<Character> document)
{ return (long)fromStream(document).words().length(); }},
longAdditionMonoid)
.claim(); }

为了实例化 ParModule,你给它一个并行策略。您可以实现自己的策略,或使用提供的策略。这是一个使用 16 个线程的固定池的线程:

ExecutorService pool = newFixedThreadPool(16);
ParModule m = parModule(executorStrategy(pool));

对于上面的示例,您需要以下导入:

import fj.F;
import fj.data.Stream;
import fj.control.parallel.ParModule;
import static fj.control.parallel.ParModule.parModule;
import static fj.pre.Monoid.longAdditionMonoid;
import static fj.data.LazyString.fromStream;
import static fj.control.parallel.Strategy.executorStrategy;
import static java.util.concurrent.Executors.newFixedThreadPool;
import java.util.concurrent.ExecutorService;

关于java - Java 中等效的并行扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1077584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com