问题标签 [fork-join]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4775 浏览

java - Fork-Join 相关:join() vs get() vs invoke()

是否有必要使用join()withfork()或者我也可以使用join(), get(), invoke(). 我检查了API,除此之外, get()InterruptedException没有ExecutionException看到差异……而且invoke()看起来完全一样。

但是我总是看到与其他两种方法相关fork()join()不是其他两种方法……它们不提供并行性吗?invoke()拥有和join()完全一样的目的是什么?我可以通过实现future来理解get(),但是invoke()和join()呢?提前致谢。

编辑:我在引用的 API 中的错误实际上说明了一些关于它的内容,正如已经收到的答案所指出的那样。但是它们是什么意思:

方法invoke()在语义上等价于fork();join() 但总是尝试在当前线程中开始执行

提前致谢。

0 投票
1 回答
11270 浏览

java - ForkJoinPool 中 Execute 、 Submit 和 Invoke() 之间的区别

我有以下运行和编译的类(你可以试试看)。唯一让我有点困惑的是,最后它与 fj.invoke(task) 一起工作得很好,但它不适用于 fj.execute(task) 和 fj.submit(task)。后者我没有得到任何输出。从 API 来看,它们也应该与其他方法一起执行任务。即使它们返回或不返回值,它们仍然应该执行任务。我在这里想念什么?

您可以简单地通过复制和粘贴代码来尝试它,通过替换

fj.invoke(new RecursiveTaskActionThing(500));

fj.execute(new RecursiveTaskActionThing(500));或与

fj.submit(new RecursiveTaskActionThing(500));它不会吐出任何输出......我想知道为什么。

提前致谢。

0 投票
1 回答
667 浏览

java - ForkJoinPool 类的 Execute() 方法

以下是API所说的:

线程,由 Executor 实现决定。

ForkJoinPool 已经是 ExecutorService 的实现了?他们在说什么?我怎么知道这种方法的行为?

0 投票
0 回答
574 浏览

java - 分叉/连接示例

我正在尝试使用Fork/Join Mechanism ( List>> forks ) 机制来搜索磁盘“D:/”上的所有文件。

这是代码。我从 JLS 那里得到了这种机制的实现。

控制台说:

有什么问题 ???我该如何解决?

0 投票
1 回答
1390 浏览

java - ForkJoinTask 完成处理程序

我有一个长期运行的计算,我已经与Java 的ForkJoinTask.

JavaFutureTask提供了一个模板方法done()覆盖此方法允许“注册完成处理程序”

是否可以为 a 注册完成处理程序ForkJoinTask

我问是因为我不想在我的应用程序中有阻塞线程 - 但是一旦我通过调用result = ForkJoinPool.invoke(myForkJoinTask)or检索计算结果,我的应用程序就会有一个阻塞线程result = ForkJoinPool.submit(myForkJoinTask).get()

0 投票
1 回答
4210 浏览

node.js - 使用 Fork 从子级向父级发送错误

我有以下代码

如何处理从 pChild.js 抛出的父级错误并终止进程?

0 投票
2 回答
47 浏览

java - 在 compute() 中调用超过 2 个 RecursiveActionTasks

在以下代码中调用许多 RecursiveAction 会有什么缺点?

类 RecursiveActionThing 扩展 RecursiveAction {

}

到目前为止,我只看到调用 2 个任务,因此执行上述调用可能会在创建所有这些任务时产生巨大的开销,但是为什么通过将 varargs 作为参数来允许呢?在某些情况下可能有用吗?哪个?提前致谢。

0 投票
1 回答
1627 浏览

java - ForkJoinPool 创建数以千计的线程

一个演示问题的简单测试:

在这个示例中,我创建了 RecursiveTask,它简单地计算数字以在 CPU 上创建一些负载。它递归地将传入范围划分为 10 个部分,当部分的大小小于 1000 或递归“深度”超过 10 时,它开始计算数字。

在 compute() 方法中注释了 3 个案例。区别仅在于分叉子任务的顺序。根据我分叉子任务的顺序,最终的线程数是不同的。在我的系统上,它为第一种情况创建了 3000 多个线程,为第二种和第三种情况创建了 4 个线程。

问题是:有什么区别?我真的需要知道这个框架的内部结构才能成功使用它吗?

0 投票
1 回答
3484 浏览

scalability - Akka - 在负载测试期间,forkjoinpool.scan 占 CPU 时间的 20%

我们在负载测试和扩展 akka 应用程序方面取得了一些不错的进展,但我们看到 scala.concurrent.forkjoin.ForkJoinPool.scan() 在 vi​​sualvm 中大约 20% 的自身时间成为第二高的热点。自用时间 (CPU) 列仅表示其中的一小部分(小于自用时间列值的 1%)。

我怀疑这意味着阻塞或上下文切换可能存在问题,但我不太确定 - 任何人都可以提供见解吗?如果是上下文切换,我猜将调度程序的吞吐量调整到更高的数字可能会给我们带来收益,否则如果它是由阻塞引起的,我们将需要更多地阅读代码。

任何见解都非常感谢。

0 投票
5 回答
571 浏览

java - 在单处理器上使用 Java fork join 框架

我已经开始使用 fj JAVA 框架了。
据我了解,它只是将算法计算等大任务划分为小线程。
问题是是否值得在单处理器机器上使用这个框架。
谢谢