在网上看到一个列子,顺便敲了一边,练练手
* ForkJoinPool是一个Excutor的子类
* ForkJoinTask:我们要使用ForkJoin框架,必须首先创建一个ForkJoin任务。它提供在任务中执行fork()和join()操作的机制,通常情况下我们不需要直接继承ForkJoinTask类,而只需要继承它的子类,Fork/Join框架提供了以下两个子类:
RecursiveAction:用于没有返回结果的任务。
RecursiveTask :用于有返回结果的任务。
class CountTask extends RecursiveTask<Integer>{
private int THRESHOLD = 2;
private int start ;
private int end;
CountTask(int start,int end){
this.start = start;
this.end = end;
}
@Override
protected Integer compute() {
int sum = 0;
boolean canFork = end-start>THRESHOLD;
if(!canFork){
for(int i=start;i<=end;i++){
sum += i;
}
}else{
int middle = (end-start)/2;
CountTask task1 = new CountTask(start,middle);
CountTask task2 = new CountTask(middle+1,end);
task1.fork();
task2.fork();
sum = task1.join() + task1.join();
/**
* getException方法返回Throwable对象,
* 如果任务被取消了则返回CancellationException。
* 如果任务没有完成或者没有抛出异常则返回null
*/
if(task1.isCompletedAbnormally())
{
System.out.println(task1.getException());
}
if(task2.isCompletedAbnormally())
{
System.out.println(task2.getException());
}
}
return sum;
}
public static void main(String[] args){
CountTask task = new CountTask(1,10000);
ForkJoinPool pool = new ForkJoinPool();
Future<Integer> sum = pool.submit(task);
println(sum.get());
}
}
分享到:
相关推荐
1.ServerSocketChannel与SocketChannel通讯 2.java Fork/Join 与ThreadPool使用
fork join 框架 生产使用实例,可以直接修改配置,实现业务。
Fork/Join框架Package jsr166y是Java 7并行编程类的的初步版本(Preliminary versions of classes targeted for Java 7.)
看了下Java Tutorials中的fork/join章节,整理下。 什么是fork/join框架 fork/join框架是ExecutorService接口的一个实现,可以帮助开发人员充分利用多核处理器的优势,编写出并行执行的程序,提高应用程序的...
而 JDK 7 中将会加入的 Fork/Join 模式是处理并行编程的一个经典的方法。虽然不能解决所有的问题,但是在它的适用范围之内,能够轻松的利用多个 CPU 提供的计算资源来协作完成一个复杂的计算任务。通过利用 Fork/...
java Fork Join框架及使用,java自带的多线程框架,来处理多线程的问题
Fork/Join框架是Java7中新增的一项特性,也是Java7平台的其中一项主要改进。下面我们就来简单探讨下Java的Fork/Join框架
主要为大家详细介绍了Java通过Fork、Join来优化并行计算,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
fork/join框架是ExecutorService接口的一个实现,可以帮助开发人员充分利用多核处理器的优势,编写出并行执行的程序,提高应用程序的性能;设计的目的是为了处理那些可以被递归拆分的任务。
Java并发网文归并总结。Fork and join,比较详细
主要介绍了浅谈Java Fork/Join并行框架,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Java并发Fork-Join框架原理
Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。 我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是...
译文:Fork and Join: Java Can Excel at Painless Parallel Programming Too!(Fork and Join Java也可以轻松地编写并发程序)
主要介绍了java8中forkjoin和optional框架使用心得以及用法讲解,需要的朋友参考下吧。
Java提供Fork/Join框架用于并行执行任务,核心的思想就是将一个大任务切分成多个小任务,然后汇总每个小任务的执行结果得到这个大任务的最终结果。 这种机制策略在分布式数据库中非常常见,数据分布在不同的数据库的...
word源码java 介绍 Wordcounter是一个 Java 库和命令行实用程序,用于对文本文件和目录树中的单词进行计数并对单词计数进行分析,例如查找所有文件中最常用的前 N 个单词。 在执行分析时,它大量使用函数式编程...
全网第一篇通过图文介绍Fork/Join框架与CompleteableFuture的PPT
Java Fork-Join 论文 排序