[备份]Java并发之FutureTask源码浅析

属性

状态属性

Possible state transitions:

其他属性

构造方法

注意到线程池调用的submit重载方法有callablerunnable两种,解释了FutureTask为什么要有两种不同的构造方法

两种构造方法一种是callable,另一种是runnable

跟入Executors.callable方法

run

submut方法通过newTaskFor方法创建FutureTask对象,通过execute方法将FutureTask对象真正提交到线程池中(参考上文代码)

线程池的执行入口是FutureTask对象的run

setsetException方法类似

get

核心方法awaitDone

跟入removeWaiter方法

get最后的report方法

finishCompletion

在分析到runset方法中,有finishCompletion方法未分析

cancel

用户如果主动调用,可以取消当前任务