2016-12-29 95 views
2

是否有一种常规方式在多个其他任务完成后运行任务,而无需保留单独的线程来等待它们?在其他几项任务完成后运行任务

+2

您可以使用回调机制(例如属性更改侦听器),然后在所有任务签入后调用上一个任务。 –

回答

3

我会用一个parallelStream其继续之前执行的任务(所以不是等待这样)

tasks.parallelStream().forEach(Runnable::run); 
doSomething(); 
+1

或['ExecutorService.invokeAll'](https://docs.oracle。 com/javase/8/docs/api/java/util/concurrent/ExecutorService.html#invokeAll-java.util.Collection-),如果需要更多的执行控制权... – Holger

0

定义优先级阻塞队列,并把所有的任务,实现媲美接口。将要运行的所有任务添加到优先队列中,这将确保具有更高优先级的任务位于最前面......继续轮询队列.....现在,如果优先级更高的任务尚未添加到队列中,但您仍然希望您的任务在该更高优先级任务之后运行.....让您的任务使用单个布尔方法实现接口,如果任务应该运行,该方法将返回true .....输入你的运行条件.......在轮询运行条件是否为假时,将任务添加回优先级队列并保持轮询。

+0

我假设你说“运行任务在完成了其他几项任务之后“您想遵循执行顺序。 – prashant

相关问题