Fork Join 框架是 Java 7 中提供的并行执行框架。
核心思想
将大任务拆分成小任务,小任务再进一步的拆分,然后分别计算,并将计算的结果合并,最终得出整个大任务的结果
实现机制
采用 工作窃取算法 实现:
- 每个工作线程都有一个双端队列,且为 LAST IN FIRST OUT(后进先出)
- 每个线程都从自己的队列末尾获取获取任务,即: 优先获取最近提交的任务。当自己队列中的任务处理完成后,就会从别人的队列头部获取任务,即:获取别的线程队列最早提交的任务。
这样就充分利用了每一个线程,提高了效率。但是当只有一个任务时,两个线程再去竞争反而会浪费资源