java8的JDK文档--Tutorial - Concurrency Lesson-Fork/Join
发挥JDK并发框架的性能,需要使用多核处理器。下面是一些我认为比较关键的译文:
fork/join介绍
fork/join 框架是 ExecutorService 接口的实现,可帮助您利用多个处理器。它专为可以递归分解为较小部分的工作而设计。目标是使用所有可用的处理能力来增强应用程序的性能。
与任何 ExecutorService 实现一样,fork/join 框架将任务分发到线程池中的工作线程。fork/join 框架是不同的,因为它使用工作窃取(work-stealing)算法。没有事情要做的工作线程可以从仍在繁忙的其他线程中窃取任务。
fork/join 框架的中心是 ForkJoinPool 类,它是 AbstractExecutorService 类的扩展。ForkJoinPool实现了核心的工作窃取算法,可以执行ForkJoinTask进程。
标准实现
除了使用 fork/join 框架为要在多处理器系统上并发执行的任务实现自定义算法(例如上一节中的 ForkBlur.java示例)之外,Java SE 中还有一些通常有用的功能,这些功能已经使用 fork/join 框架实现。Java SE 8 中引入的一个这样的实现被 java.util.Arrays 类用于其 parallelSort() 方法。这些方法类似于 sort(),但通过 fork/join 框架利用并发性。在多处理器系统上运行时,大型阵列的并行排序比顺序排序更快。但是,这些方法究竟如何利用 fork/join 框架超出了 Java 教程的范围。有关此信息,请参阅 Java API 文档。
fork/join 框架的另一个实现由 java.util.streams 包中的方法使用,该包是 Java SE 8 版本中计划的 Lambda 项目的一部分。有关更多信息,请参阅 Lambda 表达式部分。
原文如下:
引用自:
https://docs.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html