java中的FutureTask类
来源:互联网 发布:淘宝377日版官解 编辑:程序博客网 时间:2024/06/06 04:12
一、概述
位于java.util.concurrent包下,类声明: public classFutureTask<V> extends Object implements RunnableFuture<V>
可取消的异步计算。利用开始和取消计算的方法、查询计算是否完成的方法和获取计算结果的方法,此类提供了对 Future
的基本实现。仅在计算完成时才能获取结果;如果计算尚未完成,则阻塞 get 方法。一旦计算完成,就不能再重新开始或取消计算。
可使用 FutureTask 包装 Callable
或 Runnable
对象。因为FutureTask 实现了 Runnable,所以可将 FutureTask 提交给 Executor
执行。
除了作为一个独立的类外,此类还提供了 protected 功能,这在创建自定义任务类时可能很有用。
二、构造方法
1、public FutureTask(Callable<V> callable) 创建一个 FutureTask,一旦运行就执行给定的Callable
参数:
callable
- 可调用的任务。
抛出:
NullPointerException
- 如果 callable 为 null。
2、publicFutureTask(Runnable runnable,V result)
创建一个FutureTask,一旦运行就执行给定的 Runnable,并安排成功完成时 get 返回给定的结果 。
参数:runnable
- 可运行的任务。
result
- 成功完成时要返回的结果。如果不需要特定的结果,则考虑使用下列形式的构造:Future<?> f = new FutureTask<Object>(runnable, null)
抛出:NullPointerException
- 如果 runnable 为 null。
三、方法详细
三、方法详细
public booleanisCancelled() 如果在任务正常完成前将其取消,则返回true。1、
指定者:接口Future<V>
中的isCancelled
返回:如果任务完成前将其取消,则返回true
2、public booleanisDone() 如果任务已完成,则返回true。 可能由于正常终止、异常或取消而完成,在所有这些情况中,此方法都将返回 true。
指定者:接口Future<V>
中的isDone
返回:如果任务已完成,则返回true
3、public boolean cancel(boolean mayInterruptIfRunning)
此方法返回后,对 Future.isDone()
的后续调用将始终返回true。如果此方法返回 true,则对 Future.isCancelled()
的后续调用将始终返回true。
- 指定者:
- 接口
Future<V>
中的cancel
- 参数:
mayInterruptIfRunning
- 如果应该中断执行此任务的线程,则为 true;否则允许正在运行的任务运行完成- 返回:
- 如果无法取消任务,则返回 false,这通常是由于它已经正常完成;否则返回 true
- 指定者:
- 接口
Future<V>
中的get
- 返回:
- 计算的结果
- 抛出:
CancellationException
- 如果计算被取消InterruptedException
- 如果当前的线程在等待时被中断ExecutionException
- 如果计算抛出异常
如有必要,最多等待为使计算完成所给定的时间之后,获取其结果(如果结果可用)。
- 指定者:
- 接口
Future<V>
中的get
- 参数:
timeout
- 等待的最大时间unit
- timeout 参数的时间单位- 返回:
- 计算的结果
- 抛出:
CancellationException
- 如果计算被取消InterruptedException
- 如果当前的线程在等待时被中断ExecutionException
- 如果计算抛出异常TimeoutException
- 如果等待超时
7、protected voidset(V v) 除非已经设置了此 Future 或已将其取消,否则将其结果设置为给定的值。在计算成功完成时通过run 方法内部调用此方法。
8、protected voidsetException(Throwable t) 除非已经设置了此 Future 或已将其取消,否则它将报告一个ExecutionException,并将给定的 throwable 作为其原因。在计算失败时通过 run 方法内部调用此方法。
9、public voidrun() 除非已将此 Future 取消,否则将其设置为其计算的结果。
10、protected booleanrunAndReset()
- 执行计算而不设置其结果,然后将此 Future 重置为初始状态,如果计算遇到异常或已取消,则该操作失败。本操作被设计用于那些本质上要执行多次的任务。
- 返回:
- 如果成功运行并重置,则返回 true。
- java中的FutureTask类
- java中的多线程包---FutureTask
- Java中的Runnable、Callable、Future、FutureTask
- Java 中的 Future 和 FutureTask 的使用
- java FutureTask
- Java-FutureTask
- Java同步工具类——FutureTask
- FutureTask类
- Java中的Runnable、Callable、Future、FutureTask的区别与示例
- Java中的Runnable、Callable、Future、FutureTask的区别与示例
- Java中的Runnable、Callable、Future、FutureTask的区别与示例
- Java中的Runnable、Callable、Future、FutureTask的区别与示例
- Java中的Runnable、Callable、Future、FutureTask的区别与示例
- Java中的Runnable、Callable、Future、FutureTask的区别
- Java中的Runnable、Callable、Future、FutureTask的区别与示例
- Java中的Runnable、Callable、Future、FutureTask的区别与示例
- Java中的Runnable、Callable、Future、FutureTask的区别与示例
- Java中的Runnable、Callable、Future、FutureTask的区别
- Tomcat Server.xml配置文件
- 有关于抽象类和接口的区别
- OTG驱动分析(二)
- 新的放逐
- 第17周 项目6-学生成绩统计(2)
- java中的FutureTask类
- 招代理-信息发布软件|网络营销软件|发布信息
- 漫步IOS--指针细节1
- sql语句中出现笛卡尔乘积 SQL查询入门篇(转)
- 2015年智能家居市场:无生态 不智能
- Myeclipse导入项目报错:Some projects cannot be imported because they already exist in the workspace
- Spring MVC 中文件上传/删除 删除空文件夹方法 + 下载方法
- 如何使用Ubuntu手机
- rose框架学习总结