当前位置:嗨网首页>书籍在线阅读

16-运行多个任务并处理全部返回结果

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

4.5 运行多个任务并处理全部返回结果

Executor 框架允许并发地执行任务而无须考虑线程创建和执行问题。它还提供了 Future 类,以获取提交到执行器中的任意任务的状态和返回结果。

若开发者想要等待某个任务执行完毕,可以使用如下手段。

  • 当任务执行完毕后, Future 接口中的 isDone()方 法会返回 true
  • ThreadPoolExecutor 类中的 awaitTermination() 方法会让当前线程进入休眠,直到调用 shutdown() 方法后所有的任务执行完毕。

这两种方法都有一定的缺陷:第一种方法只能获取任务的完成状态;第二种方法必须关闭执行器来等待一个线程,否则方法调用会立刻返回。

ThreadPoolExecutor 类提供了一个方法可以提交一个任务列表到执行器中,并等待列表内的全部任务执行完毕。本节将在一个包含10个任务和打印其运行结果的例子中,了解到如何使用这一特性。