ForkJoinPool---ForkJoinTask
生活随笔
收集整理的這篇文章主要介紹了
ForkJoinPool---ForkJoinTask
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
import java.util.concurrent.*;class MyTask extends RecursiveTask<Integer> {//拆分差值不能超過10,計算10以內運算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;}//拆分和合并過程@Overrideprotected Integer compute() {//判斷相加兩個數值是否大于10if((end-begin)<=VALUE) {//相加操作for (int i = begin; i <=end; i++) {result = result+i;}} else {//進一步拆分//獲取中間值int middle = (begin+end)/2;//拆分左邊MyTask task01 = new MyTask(begin,middle);//拆分右邊MyTask task02 = new MyTask(middle+1,end);//調用方法拆分task01.fork();task02.fork();//合并結果result = task01.join()+task02.join();}return result;}
}public class ForkJoinDemo {public static void main(String[] args) throws ExecutionException, InterruptedException {//創建MyTask對象MyTask myTask = new MyTask(0,100);//創建分支合并池對象ForkJoinPool forkJoinPool = new ForkJoinPool();ForkJoinTask<Integer> forkJoinTask = forkJoinPool.submit(myTask);//獲取最終合并之后結果Integer result = forkJoinTask.get();System.out.println(result);//關閉池對象forkJoinPool.shutdown();}
}
總結
以上是生活随笔為你收集整理的ForkJoinPool---ForkJoinTask的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RocketMQ-- 一对多 (消费者与
- 下一篇: atomic底层实现是基于无锁算法cas