如何正确同步复用Java中的ForkJoinPool?

How to correctly synchronize and reuse the ForkJoinPool in Java?

这是一个例子:

ForkJoinPool pool = new ForkJoinPool();  
pool.submit(new RecursiveTaskA());  
// wait the task to finish  
doSomethingElse();  

pool.submit(new RecursiveTaskB());
...  

问题一:
如何确保 RecursiveTaskA 在调用 doSomethingElse()?
之前完成 目前我的解决方案是:

ForkJoinPool pool = new ForkJoinPool();  
pool.submit(new RecursiveTaskA());  

pool.shutdown();  
pool.awaitTermination(1, TimeUnit.MINUTES);  

// wait the task to finish  
doSomethingElse();  

这是正确的方法吗?或者有更好的方法吗?
问题 2:
如果我使用上面的解决方案,那么 pool.submit(new RecursiveTaskB()); 会导致错误。我不想做一个新的ForkJoinPool,怎么办?

任何link,参考对我有帮助,谢谢。

如果我理解正确你的问题,你可以join提交的任务:

RecursiveTaskA taskA = new RecursiveTaskA();
pool.submit(taskA);
taskA.join();
doSomethingElse();