java线程之分支合并框架

简介: java线程之分支合并框架
import java.util.concurrent.RecursiveTask;
 
public class MyTask extends RecursiveTask<Integer> {
    //定义拆分差值
    private static final Integer VALUE=10;
    //定义开始值
    private int begin;
    //定义结束值
    private int end;
    //收集结果
    private int result;
 
    public MyTask(int begin, int end) {
        this.begin = begin;
        this.end = end;
    }
 
    @Override
    protected Integer compute() {
        //判断是否需要拆分
        if ((end-begin)<=VALUE) {
        //    计算
            for (int i=begin;i<=end;i++){
                result=result+i;
            }
        }else{
            int middle=(begin+end)/2;
            MyTask m1=new MyTask(begin,middle);
            MyTask m2=new MyTask(middle+1,end);
            m1.fork();
            m2.fork();
            result=m1.join()+m2.join();
        }
        return result;
    }
}
  public static void main(String[] args) throws ExecutionException, InterruptedException {
        //创建任务对象
        MyTask myTask = new MyTask(0, 100);
        //创建分支合并池对象
        ForkJoinPool pool = new ForkJoinPool();
        //执行任务
        ForkJoinTask<Integer> forkJoinTask = pool.submit(myTask);
        //获取执行结果
        Integer result = forkJoinTask.get();
        //打印结果
        System.out.println(result);
        //关闭池对象
        pool.shutdown();
    }

目录
相关文章
|
3天前
|
存储 消息中间件 算法
Java中的集合框架详解:List、Set、Map的使用场景
Java中的集合框架详解:List、Set、Map的使用场景
|
2天前
|
前端开发 Java 数据库连接
Java与Spring框架的深度融合
Java与Spring框架的深度融合
|
2天前
|
监控 Java API
Java日志框架的纷争演进与传奇故事
Java日志框架的纷争演进与传奇故事
|
1天前
|
SQL 缓存 Java
Java框架之MyBatis 07-动态SQL-缓存机制-逆向工程-分页插件
Java框架之MyBatis 07-动态SQL-缓存机制-逆向工程-分页插件
|
1天前
|
XML 安全 Java
必知的技术知识:Java日志框架:logback详解
必知的技术知识:Java日志框架:logback详解
|
1天前
|
算法 安全 Java
技术经验分享:JavaSecurity:Java加密框架(JCA)简要说明
技术经验分享:JavaSecurity:Java加密框架(JCA)简要说明
|
2天前
|
Java Maven
使用Java合并PDF文档
使用Java合并PDF文档
5 0
|
2天前
|
存储 安全 算法
|
2天前
|
并行计算 算法 Java
深入理解Java中的ForkJoin框架原理
深入理解Java中的ForkJoin框架原理
|
3天前
|
算法 Java
Java数据结构与算法:用于处理不相交集合的合并和查找问题
Java数据结构与算法:用于处理不相交集合的合并和查找问题

热门文章

最新文章