首頁  >  問答  >  主體

java - ThreadPoolExecutor.execute()方法疑惑

根据类的继承机构,我们知道ThreadPoolExecutorService 继承了AbstractExecutorService类继承了ExecutorService接口继承了Executor接口中的execute()方法,这个方法是被用来专门执行异步任务的,通过传入参数Runnable来执行的。但是我看到ThreadPoolExecutorService.execute(Runnable command)方法中的源码表示不理解,求大牛帮忙看看这个源码,究竟都做了一些什么?

ringa_leeringa_lee2713 天前733

全部回覆(2)我來回復

  • 阿神

    阿神2017-04-18 09:37:56

    1. 如果有小於 corePoolSize (核心線程)的線程正在執行, 就把當前任務提交到首位. 然後 addWorker 方法會做一些檢查;

    2. 當新的任務放入佇列之後, 還會再次執行檢查(因為狀態會改變或執行緒池被關閉了)來判定是否需要回滾或再建立一個新的執行緒物件;

    3. 如果不能把任務放入隊列, 那麼就會嘗試添加新的 Thread 對象, 否則就會拒絕這個任務

    PS: 我記得我看過一篇很不錯的文章詳細得分析了這個方法和整個線程池的知識, 我幫你找找...

    update: 深入理解Java之執行緒池

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-18 09:37:56

    加油

    回覆
    0
  • 取消回覆