这是一个例子:
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();
关于java - Java中如何正确同步和重用ForkJoinPool?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33750504/