孤独的猫

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

1、Executor框架使用Runnable作为其任务的基本表达形式。Runnable相当有限,不能返回一个值,也不能抛出受检查的异常,对于复杂费时的计算更加无法处理

2、因此产生了Callable和Future这种任务,对任务进行全面管理

3、

1)Callable在主进入点-call处等待返回值,并为可能抛出的异常预先做了准备。

2)Executors包含了一些工具方法将其他类型的任务封装成一个Callable,比如Runnable和java.security.PrivilegedAction。Runnable和Callable描述的是抽象的计算型任务。

3)这些任务很有限,有明确的开始和结束,但是对于非常费时的任务比较麻烦,对于已经提交但尚未开始的任务可以取消,但是对于已经开始的任务,只有它们响应中断,才可以取消。

4、

1)Future描述了任务的生命周期,并提供了相关的方法来获得任务的结果、取消任务以及检验任务已经完成还是被取消。

2)Future意味着任务完成后永远停留在完成状态上,就像ExecutorService的生命周期。使用get方法完成任务和异常处理。

3)ExecutorService中的所有submit方法都返回一个Future,可以将一个Runnable或一个Callable提交给executor,然后得到一个Future。也可以显式地为给定的Runnable或Callable实例化一个FutureTask

posted on 2012-05-31 21:27  孤独的猫  阅读(198)  评论(0编辑  收藏  举报