【Java并发编程】Fork/Join

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

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

用伪代码表示逻辑如下

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

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

在Java标准库中,java.util.Arrays中parallelSort也是利用了Fork/Join框架。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值