ForkJoinPool
ForkJoinTask
RecursiveTask
demo-fibonacci
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.ForkJoinTask;
import java.util.concurrent.RecursiveTask;
public class FibonacciDemo extends RecursiveTask<Integer> {
private int num;
public FibonacciDemo(int num) {
this.num = num;
}
@Override
protected Integer compute() {
if(num<=2){
return 1;
}
FibonacciDemo fibonacciDemo=new FibonacciDemo(num-1);
FibonacciDemo fibonacciDemo2=new FibonacciDemo(num-2);
fibonacciDemo.fork();
fibonacciDemo2.fork();
return fibonacciDemo.join()+fibonacciDemo2.join();
}
public static void main(String[] args) throws ExecutionException, InterruptedException {
ForkJoinPool forkJoinPool=new ForkJoinPool();
FibonacciDemo fibonacciDemo=new FibonacciDemo(5);
ForkJoinTask<Integer> forkJoinTask=forkJoinPool.submit(fibonacciDemo);
System.out.println(forkJoinTask.get());
forkJoinPool.shutdown();
}
}