如何在Java中正确地同步和重用ForkJoinPool



这是一个例子:

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

问题1:
如何确保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,怎么做?

任何链接,参考资料都会对我有帮助,谢谢。

如果我正确处理了你的问题,你只需要join提交的任务:

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

相关内容

  • 没有找到相关文章

最新更新