UNB/ CS/ David Bremner/ teaching/ cs3383/ examples/ ParFib.java
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.RecursiveTask;

class Globals {
}

class ParFib extends RecursiveTask<Long>{
    Long n;
    ParFib(Long param) {
	n = param;
    }

    protected Long compute() {
	if (n <= 1) {
	    return n;
	} else {
	    ParFib left = new ParFib(n-1);
	    left.fork();
	    ParFib right = new ParFib(n-2);
	    	    
	    Long y = right.compute();
	    Long x = left.join();
	    return x + y;
	}	    
    }
    public static void main(String [] args) {
	ForkJoinPool pool = new ForkJoinPool();

	Long num = Long.parseLong(args[0]);
	Long result = pool.invoke (new ParFib(num));
	System.out.println(result);
    }
}