JAVA7 的ForkJoin框架-学习笔记
2015-12-13 15:51
645 查看
摘抄
//使用双端队列 用来 实现 窃取算法,
//1. 继承RecursiveAction/RecursiveTask 实现相应的compute方法
//RecursiveAction:用于无返回结果的任务。实现 void compute()
//RecursiveTask : 有结果。实现<T>compute()
//2. ForkJoinPool 执行任务
//使用双端队列 用来 实现 窃取算法,
//1. 继承RecursiveAction/RecursiveTask 实现相应的compute方法
//RecursiveAction:用于无返回结果的任务。实现 void compute()
//RecursiveTask : 有结果。实现<T>compute()
//2. ForkJoinPool 执行任务
//实现 1~1000 的和 public class MyTask extends RecursiveTask<Integer>{ private static final int NUM = 10; //超过两个就分割 private int start; private int end; public MyTask(int start,int end){ this.start = start; this.end = end; } protected Integer compute() { int sum = 0; if( end - start < NUM) for(int i =start; i<=end; ++i) sum += i; else { int mid = (start + end)/2; // 分解任务 MyTask leftTask= new MyTask (); MyTask rightTask = new MyTask (); //小任务执行 task.fork() leftTask.fork(); rightTask .fork(); //拿到子任务结果 task.join() sum = leftTask.join() + rightTask .join(); } return sum; } public static void main(String[] args) { //提交任务到ForkJoin框架 new ForkJoinPool().invoke(new MyTask(1,1000)); } }
相关文章推荐
- eclipse安装和卸载插件
- java的io操作
- Java 的Hashtable和HashMap的区别
- Java API实现文件复制
- 深度分析Java的ClassLoader机制(源码级别)
- Java回炉之多线程(二)生产者与消费者
- java实现梯度下降算法
- BF算法(java版本)
- Java泛型详解【转】
- Java日志记录的事儿
- KMP算法(java版本)
- java类初始化
- Intellij idea搭建maven+springMVC开发项目(二)
- Spark---Scala与Java性能比较
- Java虚拟机(二)执行子系统
- struts2知识点总结(3)
- Java&Xml教程(五)使用SAX方式解析XML文件
- Java&Xml教程(五)使用SAX方式解析XML文件
- Java&Xml教程(五)使用SAX方式解析XML文件
- 一个简单的hibernate+mysql的实例java/jsp开发