FutureTask只实现RunnableFuture接口:
该接口继承了java.lang.Runnable和Future接口,也就是继承了这两个接口的特性。
1.可以不必直接继承Thread来生成子类,只要实现run方法,且把实例传入到Thread构造函数,Thread就可以执行该实例的run方法了( Thread(Runnable) )。
2.可以让任务独立执行,get获取任务执行结果时,可以阻塞直至执行结果完成。也可以中断执行,判断执行状态等。
FutureTask是一个支持取消行为的异步任务执行器。该类实现了Future接口的方法。
如: 1. 取消任务执行
2. 查询任务是否执行完成
3. 获取任务执行结果(”get“任务必须得执行完成才能获取结果,否则会阻塞直至任务完成)。
注意:一旦任务执行完成,则不能执行取消任务或者重新启动任务。(除非一开始就使用runAndReset模式运行任务)
FutureTask支持执行两种任务, Callable 或者 Runnable的实现类。且可把FutureTask实例交由Executor执行。
源码部分(很简单):