ForkJoin

核心思想:分而治之,fork给出子任务,join获取子任务结果
ForkJoinPool,ForkJoinWorkerThread,ForkJoinTask

ForkJoinPool:继承AbstractExecutorService,含工作队列数组,奇数队列对应某线程,偶数队列代表来自外部提交任务

ForkJoinWorkerThread:含自己的工作队列,不仅运行自己队列任务,还窃取其他队列
循环中,尝试窃取任务,运行窃取的任务后再运行剩余的自己队列的任务,继续窃取
记住:线程工作队列一般是没有任务的,一般是窃取任务运行中加入了某些任务在线程队列里,加入的任务可能被其他线程窃取,也可能自己在join的时候运行,也可能运行完当前任务后接着运行
新任务放top,窃取base,即FIFO,运行自己队列任务从top开始,即LIFO,避免竞争

ForkJoinTask:(是Future,也是可执行实体,含exec方法, RecursiveAction无结果计算,RecursiveTask有结果计算)
fork(当前线程为workerThread,则任务放入当前线程的队列,否则放入common池)
join(自己是外部线程则等待,是workerThread可能等待可能自己执行(任务在队列的top))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值