1.FutureTask工作原理
2022-03-09 14:34:21 0 举报
FutureTask工作原理
作者其他创作
大纲/内容
返回执行结果outcome
执行抛出异常
开启自旋
执行正常结束
FutureTask.run()
report(s)6.返回执行结果
FutureTask执行原理
2. 提交任务的线程调用FutureTask.get()
抛出执行异常异常内容为outcome
submit(callable)->get()->report()->获取执行结果
将线程节点加入等待队列
1.2 转换
1.3 返回FutureTask
Callable<T>
通过LockSupport.unpark(t);唤醒等待线程
指向下一个节点直到唤醒所有节点
通过LockSupport.park()等待或者LockSupport.parkNanos()超时等待
提交任务的线程(Runnable/Callable)
获取返回的state
新加入的线程封装成WaitNode
先计算等待超时时间
遍历WaitNode等待获取结果的节点
调用Callable.call()方法
waitDone()等待执行线程执行完成
完成调用
call()是否执行成功
获取节点中的Thread
任务被取消或线程被中断抛出取消异常
finishCompletion()4.完成调用
执行成功
1.1 提交
执行线程
执行结束
FutureTask<T>(callable)
3.执行线程调用runnable.run()实际调用到FutureTask的run()
执行成功span style=\"font-size: inherit;\
5.唤醒等待线程
线程池
FutureTask.get()
0 条评论
下一页