美文网首页
java并发包常见闭锁之FutureTask

java并发包常见闭锁之FutureTask

作者: kokokokokoishi | 来源:发表于2018-08-08 00:18 被阅读0次

FutureTask 实现了 RunnableFuture 这个接口,RunnableFuture这个接口继承了RunnableFuture这两个接口

FutureTask.png
由于实现了Future这个接口,所以具有了Future的cancel等特性,由于实现了Runnable这个接口,所以可以将FutureTask交给Executor执行,在Executor框架中,一个FutureTask代表一个异步任务。
FutureTask 有以下几种状态
NEW,COMPLETING,NORMAL,EXCEPTIONAL,CANCELLED,INTERRUPTING,INTERRUPTED

可能的状态变化

  • NEW -> COMPLETING -> NORMAL
  • NEW -> COMPLETING -> EXCEPTIONAL
  • NEW -> CANCELLED
  • NEW -> INTERRUPTING -> INTERRUPTED
    状态在进入最终状态后不可变,
    当调用FutureTask#get()时,线程会阻塞直至状态达到最终状态,若最终状态为NORMAL,则正常返回,若状态为CANCELLED或INTERRUPTED,则抛出CancellationException,若状态为EXCEPTIONAL,则抛出对应的执行异常
    若状态已决议,则直接返回保存的值,过程与上文一致

相关文章

网友评论

      本文标题:java并发包常见闭锁之FutureTask

      本文链接:https://www.haomeiwen.com/subject/heizvftx.html