16-运行多个任务并处理全部返回结果
4.5 运行多个任务并处理全部返回结果
Executor
框架允许并发地执行任务而无须考虑线程创建和执行问题。它还提供了 Future
类,以获取提交到执行器中的任意任务的状态和返回结果。
若开发者想要等待某个任务执行完毕,可以使用如下手段。
- 当任务执行完毕后,
Future
接口中的isDone()方
法会返回true
。 ThreadPoolExecutor
类中的awaitTermination()
方法会让当前线程进入休眠,直到调用shutdown()
方法后所有的任务执行完毕。
这两种方法都有一定的缺陷:第一种方法只能获取任务的完成状态;第二种方法必须关闭执行器来等待一个线程,否则方法调用会立刻返回。
ThreadPoolExecutor
类提供了一个方法可以提交一个任务列表到执行器中,并等待列表内的全部任务执行完毕。本节将在一个包含10个任务和打印其运行结果的例子中,了解到如何使用这一特性。