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 条评论
 下一页
  
   
   
   
  
  
  
  
  
  
  
  
 