Java多线程 - 每次任务完成其工作时安排任务

时间:2016-08-09 07:57:56

标签: java multithreading

我想运行一个任务,其中包含一个执行其他任务的Timer。我需要等到该子任务完成后才能运行另一个"父任务"。

那么我怎么能让主任务等到其子任务完成执行才能开始执行另一项任务?

我想在每个任务中用boolean isDone通知它,但我不确定它是否正确

2 个答案:

答案 0 :(得分:0)

您可以在父线程中使用CountDownLatch,它将等到子项完成它的工作并调用countDown()方法,以便父线程可以继续它的工作。您可以拥有多个子项,并且可以将CountDownLatch的计数值调整为等于它们。

我不建议使用volatile变量,因为你必须连续地让父线程进入休眠状态,并检查变量在唤醒后是否发生了变化。

答案 1 :(得分:0)

等待一堆任务完成:invokeAll

sed 's/run[^=]* ==>> [0-9]* *:: *//g'

或者

// Assume we have an ExecutorService "pool" and tl is list of tasks
List<Future<SomeType>> results = pool.invokeAll( tl ); // will block until all tasks in tl are completed