简介
ForK/Join框架是JDK 7提供的一个用于并行执行任务的框架,把一个大任务分割成若干个小任务,最终汇聚每个小任务结果得到大任务结果的框架。Fork:把大任务切分成若干子任务并行执行;Join:合并这些子任务的执行结果,最后得到大任务的结果。
使用
分割任务
首先需要一个Fork类把大任务分割成若干子任务,可能子任务还是很大,再来切割。
执行任务合并结果
分割的子任务分别放在双端队列里,然后启动几个线程分别从双端队列中获取任务执行。子任务完成后的结果统一放在一个队列里。启动一个线程从这个队列里获取数据,然后合并这些数据。
Fork/Join使用两个类完成以上事情
①ForkJoinTask:使用Fork/Join 框架,必须创建一个ForkJoin任务。它提供在任务中执行fork(),join()操作。
通常通过继承ForkJoin的子类
1
2RecursiveAction:用于没有返回结果的任务
RecursiveTask: 用于有返回结果的任务②ForkJoinPool: ForkJoin需要通过ForkJoinPool执行
任务分割出的子任务会添加到当前工作线程所维护的双端队列中,进入队列的头部。当工作线程队列里没有任务,他会随机从其他工作线程队列的尾部获取一个任务
原理
–未完。。。待续。。。。