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

32-在执行器内控制任务的完成

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

4.9 在执行器内控制任务的完成

Java API提供了 FutureTask 类来实现一个可取消的异步计算。该类实现了 RunnableFuture 接口,并提供了 Future 接口的基本实现。由于可以用 Callable 或者 Runnable 实例对象来创建一个 FutureTask 类(由于 Runnable 对象不返回执行结果,因此在本例中不得不传入 Callable 对象作为参数,接收 Future 对象的返回结果)。该类提供了一些方法来取消任务执行和返回计算结果,同时也提供了 done() 方法在执行器执行完成任务后再执行某些代码。该方法可以执行一些延迟处理操作,如生成一份报告,通过邮件发送程序执行结果,释放某些资源等。当 FutureTask 管理的任务执行结束时, FutureTask 类会在内部调用该方法。当任务返回执行结果且状态变更为 isDone 时,无论任务是正常完成还是已取消,都会调用该方法。

默认情况下,该方法为空方法。可以通过继承 FutureTask 类并重写该方法来改变行为。本节将介绍重写该方法并在任务结束后执行代码的内容。