这是一个例子:
ForkJoinPool pool = new ForkJoinPool();
pool.submit(new RecursiveTaskA());
// wait the task to finish
doSomethingElse();
pool.submit(new RecursiveTaskB());
...
问题1:
在调用 doSomethingElse()之前如何确保RecursiveTaskA完成?
目前我的解决方案是:
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,怎么做呢?
任何链接,参考都会对我有所帮助,谢谢。
答案 0 :(得分:1)
如果我正确处理您的问题,您只需join
提交的任务:
RecursiveTaskA taskA = new RecursiveTaskA();
pool.submit(taskA);
taskA.join();
doSomethingElse();