java Fork/Join框架的使用方法
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容介绍了"java Fork/Join框架的使用方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所
千家信息网最后更新 2026年11月03日java Fork/Join框架的使用方法
本篇内容介绍了"java Fork/Join框架的使用方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
Fork/Join框架重点说明:
1,在必要的情况下,将一个大任务,进行拆分(fork) 成若干个子任务(拆到不能再拆,这里就是指我们制定的拆分的临界值),再将一个个小任务的结果进行join汇总。
2,Fork/Join采用"工作窃取模式"。
3,ForkJoin更有效的利用的CPU资源。
4,Java 8 中将并行流进行了优化,Stream API可以声明性的通过parallel()与sequential()在并行流与串行流中随意切换。
以下是简单示例:
public class ForkJoinWorkTest extends RecursiveTask{ private Long start; private Long end; public static final Long critical = 100000L; public ForkJoinWorkTest(Long start, Long end) { this.start = start; this.end = end; } @Override protected Long compute() { Long length = end - start; if(length <= critical) { // 拆分完毕 Long sum = 0L; for(Long i = start; i <= end; i++) { sum += i; } return sum; } else { // 未拆分完毕 Long middle = (end + start)/2; ForkJoinWorkTest right = new ForkJoinWorkTest(start, middle); right.fork(); ForkJoinWorkTest left = new ForkJoinWorkTest(middle + 1, end); left.fork(); return right.join() + left.join(); } }}
单元测试代码:
import java.util.concurrent.*;import java.util.stream.LongStream;public class ForkJoinWorkTestDemo { public static void main(String args[]) { Long startTime = System.currentTimeMillis(); ForkJoinPool forkJoinPool = new ForkJoinPool(); ForkJoinTask forkJoinTask = new ForkJoinWorkTest(0L,100000000L); Long invoke = forkJoinPool.invoke(forkJoinTask); Long endTime = System.currentTimeMillis(); System.out.println("forkAndJoin:"+invoke+" time:"+(endTime - startTime)); System.out.println("======================================================="); Long startTime1 = System.currentTimeMillis(); Long sum = 0L; for(Long i=0L;i<=100000000L;i++) { sum += i; } Long endTime1 = System.currentTimeMillis(); System.out.println("normalSum:"+sum+" time:"+(endTime1 - startTime1)); System.out.println("======================================================="); Long startTime2 = System.currentTimeMillis(); Long sum8 = LongStream.rangeClosed(0, 100000000L).parallel().reduce(0,Long::sum); Long endTime2 = System.currentTimeMillis(); System.out.println("Jdk8Sum:"+sum8+" time:"+(endTime2 - startTime2)); }} 结果如下:

"java Fork/Join框架的使用方法"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
框架
任务
使用方法
方法
内容
情况
更多
知识
结果
实用
有效
必要
学有所成
接下来
个子
中将
临界值
代码
单元
困境
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技官网
互联网科技网站
互联网科技大会
玖二柒互联网科技公司待遇
西藏七维空间互联网科技有限公司
广州慧亚互联网科技怎么样
以后互联网后是啥科技
互联网科技有哪些公司
亳州好赞互联网科技有限公司
畅思互联网科技
如何创新互联网科技
四川慕妮娅互联网科技有限公司
朱啸虎曾投资哪些互联网科技企业
烟台灵鸽互联网科技有限公司
伊宁互联网科技做什么的
元气玛特互联网科技公司是外包吗
互联网公司属于科技吗
北京天晋互联网科技有限公司
众联互联网络科技
互联网科技创业计划的风险分析
A股互联网金融科技公司
美国互联网科技
互联网科技股票
互联网科技论坛
欧洲十大科技互联网公司
互联网企业和科技型企业
如何创新互联网科技
四川慕妮娅互联网科技有限公司
互联网风格科技公司名称
神州科技互联网有限公司