java - 有关 Fork-Join 框架的详细信息

标签 java fork-join

在 Doug Lea 的论文“A Java Fork/Join Framework”中:

http://gee.cs.oswego.edu/dl/papers/fj.pdf

在 2.1 Work-Stealing 中他说:

When a worker thread encounters a join operation, it processes other tasks, if available, until the target task is noticed to have completed (via isDone). All tasks otherwise run to completion without blocking.

那么谁能具​​体告诉我这些“其他任务”是从哪里来的呢?它们来自其他工作线程的任务队列吗?这是否意味着每当工作线程遇到连接调用时,它就会继续“从其他线程窃取任务”而不是“跳到自己队列中的其他任务”?

最佳答案

“其他任务”可能在有待处理任务时来自自己的双端队列,其他线程的双端队列,或者来自新请求的提交队列。

join() 是一个相当困难的过程。它涉及到任务控制,即在任务处于 Activity 处理和暂停等待状态时能够控制任务。在应用程序中这样做通常是行不通的。 (操作系统做得很好,Cilk、JCilk 通过使用编译器/运行时来做到这一点。)Doug Lea 在连接陷入工作线程时使用“延续线程”。

关于java - 有关 Fork-Join 框架的详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10103204/

相关文章:

java - JBoss - 如何排除 jboss-deployment-structure 中的 javax.validation?

Java fork join算法分析

java - ForkJoinPool,如何打印出每个工作线程的ID?

Java Fork-Join 不适用于大型 ArrayList

java - (#200) 需要扩展权限 : publish_actions

c# - SQL Server 2008 的 Java 替代方案 - 紧凑

java - Java 中使用 Map 的 JSON 解析器

java - 在实际应用程序中使用模拟对象(未测试)

java - Fork Join 优化

delphi - OmnithreadLibrary 是否支持 "work stealing"?