框架基础:并发编程

  1. 1 知识体系
  2. 2 问题
    1. Fork/Join
  3. 3 参考

鸟, 枝杈, 坐, 羽毛, 蓝鸟, 小鸟, 大街, 禽类, 鸟类学, 观鸟, 动物, 动物世界, 特写, 花朵

1 知识体系

是什么?如何用?应用场景?

2 问题

Fork/Join

从JDK1.7开始,Java提供Fork/Join框架用于并行执行任务,它的思想就是讲一个大任务分割成若干小任务,最终汇总每个小任务的结果得到这个大任务的结果。

这种思想和MapReduce很像(input –> split –> map –> reduce –> output)

主要有两步:

  • 第一、任务切分;
  • 第二、结果合并

它的模型大致是这样的:线程池中的每个线程都有自己的工作队列(PS:这一点和ThreadPoolExecutor不同,ThreadPoolExecutor是所有线程公用一个工作队列,所有线程都从这个工作队列中取任务),当自己队列中的任务都完成以后,会从其它线程的工作队列中偷一个任务执行,这样可以充分利用资源。

Fork/Join是一种基于“分治”的算法:通过分解任务,并行执行,最后合并结果得到最终结果。

ForkJoinPool线程池可以把一个大任务分拆成小任务并行执行,任务类必须继承自RecursiveTaskRecursiveAction

使用Fork/Join模式可以进行并行计算以提高效率。

3 参考

1、Java Fork/Join 框架 https://www.cnblogs.com/cjsblog/p/9078341.html


竭尽全力、专心致志、全神贯注的做好分内之事;分享,成长,拒绝浅尝辄止。

💰

×

Help us with donation