您的位置:首页 > 编程语言 > Java开发

【Java并发编程】Fork/Join

2017-07-31 17:16 295 查看
Fork/Join 框架实现了ExecutorService接口,提供了充分利用多处理器的功能。那些可以递归分解为许多小任务的非常适合使用这种方式。Fork/Join 框架采用了“工作窃取算法”——空闲的线程可以从繁忙的线程那些“窃取”一些任务。

Fork/Join 框架的核心是类ForkJoinPool,该类是AbstractExecutorService的子类,实现了“工作窃取算法”。可以执行ForkJoinTask任务

用伪代码表示逻辑如下

if (任务被分解得足够小了) {
处理该这个任务
} else {
将任务分解成两部分,分别执行,等待结果
}


将这段代码写进ForkJoinTask的一个实现类中,可以是继承RecursiveTask或者RecursiveAction,借此,然后调用ForkJoinTask的invoke方法。

在Java标准库中,java.util.Arrays中parallelSort也是利用了Fork/Join框架。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 并发