fork/join的java7新增加的功能,可以把它理解成一个并发框架。我们通过fork/join能将一个可分解的大任务,分解成多个子任务同步执行,执行完毕后,在将各子任务的结果进行合并,得到最终的结果。fork-join排队网络
使用fork/join,首先要创建fork/join任务,可以通过继承RecursiveAction或RecursiveTask来实现(ForkJoinTask是它们的父类)
RecursiveAction 不返回结果 RecursiveTask 返回结果
常用方法
compute(); 计算方法(分拆的子任务) fork(); // 执行子任务 join(); // 子任务结束后返回对应结果
ForkJoinPool
除此之外,java还提供了个ForkJoinPool的工具类,它实现了工作窃取算法,使得空闲线程能够主动分担从别的线程分解出来的子任务,从而让所有的线程都尽可能处于饱满的工作状态,提高执行效率。fork-join排队网络
常用方法
execute(); //异步执行命令 invoke()和invokeAll(); // 异步执行命令,并返回对应结果 submit(); //异步执行命令,同时返回Future对象
使用方式如下
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-40543-1.html
特别棒咯