ToB企服应用市场:ToB评测及商务社交产业平台
标题:
JUC并发编程学习(十三)ForkJoin
[打印本页]
作者:
用多少眼泪才能让你相信
时间:
2023-12-6 18:54
标题:
JUC并发编程学习(十三)ForkJoin
ForkJoin
什么是ForkJoin
ForkJoin在JDK1.7,并发执行任务!大数据量时提高效率。
大数据:Map Reduce(把大任务拆分成小任务)
ForkJoin特点:工作窃取
为什么可以取窃取其他线程的任务呢?因为这里面维护的都是
双端队列
(即队列的两端都可以取元素)
ForkJoin操作
在java.util.concurrent下的接口摘要中,有以下两个接口
点进其中一个找到具体的类,可以看到ForkJoinPool
这是具体的执行类,就像ThreadPoolExecutor
具体的执行通过ForkJoinTask类来执行
使用ForkJoin
1、需要一个ForkJoinPool,通过execute方法来执行,参数为ForkJoinTask
2、计算任务 forkJoinPool.execute(ForkJoinTask task)
3、定义一个ForkJoinTask
如何去定义一个ForkJoinTask,打开jdk文档,找到ForkJoinTask类,查看具体的子类。
其中递归事件没有返回值,而任务肯定要有结果,所以递归任务是有返回值的
点进任务,查看示例
代码示例:
[code]package org.example.forkjoin;/** 求和计算的任务*** 程序员的三六九等* 三(普通求和)、六(ForkJoin)、九(Stream并行流)*** 使用ForkJoin:* 1、ForkJoinPoll 通过他来执行* 2、计算任务 forkJoinPool.execute(ForkJoinTask task)* 3、定义一个ForkJoinTask*** */import java.util.concurrent.RecursiveTask;public class ForkJoinDemo extends RecursiveTask { private Long start; private Long end; //临界值 private Long temp = 10000L; public ForkJoinDemo(Long start, Long end) { this.start = start; this.end = end; } //计算方法 @Override protected Long compute() { if ((end-start)
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4