简介:
FutureTask是接口Future的实现,可以保存callable异步处理返回的结果。
FutureTask中部分变量如下:
private static final int NEW = 0; //任务新建和执行中
private static final int COMPLETING = 1; //任务将要执行完毕
private static final int NORMAL = 2; //任务正常执行结束
private static final int EXCEPTIONAL = 3; //任务异常
private static final int CANCELLED = 4; //任务取消
private static final int INTERRUPTING = 5; //任务线程即将被中断
private static final int INTERRUPTED = 6; //任务线程已中断
总结下,FutureTask的状态流转过程,可以出现以下四种情况:
1. 任务正常执行并返回。 NEW -> COMPLETING -> NORMAL
2. 执行中出现异常。NEW -> COMPLETING -> EXCEPTIONAL
3. 任务执行过程中被取消,并且不响应中断。NEW -> CANCELLED
4. 任务执行过程中被取消,并且响应中断。 NEW -> INTERRUPTING -> INTERRUPTED
其中NORMAL、EXCEPTIONAL、CANCELLED和INTERRUPTED都是最终状态。
参考:https://blog.youkuaiyun.com/liangwenmail/article/details/81477587
参考:https://blog.youkuaiyun.com/xingzhong128/article/details/80553789