对于高并发来说,这一直是痛点, 今天有学 了下Fork/Join框架,其中他的主要类有以下几种:
ForkjoinTask<V>:描述任务的抽象类
ForkJoinPool:管理ForkJoinTask的线程池
RecursiveAction:ForkJoinTask子类,描述无返回值的任务
RecursiveTask<V>: ForkJoinTask子类,描述有返回值的任务
这个框架的策略是分而治之:将任务地柜划分成更小的子任务, 直到子任务足够小,从而能够被连续的处理掉为止
优点:处理过程中可以使用并行发生,这种情况特别适合基于多核处理器的并行编程。
下面就写一个小例子来演示下这个框架的应用:
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.Future;
import java.util.concurrent.RecursiveTask;
/**
* Fork/Join框架demo
* Created by T430 on 2017/8/14.
*/
public class ForkJoinDemo {
private static int THRESLOD=1000;//任务阈值
/**
* 求1到100万之间的和,因为需要返回结果,所以需要继承recursiverTask
*/
static class MC extends RecursiveTask<Long>{
Long sum = Long.valueOf(0);
private int begin,end;
public MC(int begin, int end){
this.begin=begin;