import java.util.concurrent.*; public class MyTask extends RecursiveTask<Integer> { private int start; private int end; public MyTask(int start, int end) { this.start = start; this.end = end; } @Override protected Integer compute() { if (end - start <= 1000) { int sum = 0; for (int i = start; i <= end; i++) { sum += i; } return sum; } else { int mid = (start + end) / 2; MyTask leftTask = new MyTask(start, mid); MyTask rightTask = new MyTask(mid + 1, end); leftTask.fork(); rightTask.fork(); return leftTask.join() + rightTask.join(); } } public static void main(String[] args) throws Exception { ForkJoinPool forkJoinPool = new ForkJoinPool(); MyTask task = new MyTask(1, 10000); Future<Integer> result = forkJoinPool.submit(task); System.out.println(result.get()); } }


上一篇:
下一篇:
切换中文