線程池的五種狀態


線程池的生命周期,總共有五種狀態

  • RUNNING :能接受新提交的任務,並且也能處理阻塞隊列中的任務;
  • SHUTDOWN:關閉狀態,不再接受新提交的任務,但卻可以繼續處理阻塞隊列中已保存的任務。在線程池處於 RUNNING 狀態時,調用 shutdown()方法會使線程池進入到該狀態。(finalize() 方法在執行過程中也會調用shutdown()方法進入該狀態);
  • STOP:不能接受新任務,也不處理隊列中的任務,會中斷正在處理任務的線程。在線程池處於 RUNNING 或 SHUTDOWN 狀態時,調用 shutdownNow() 方法會使線程池進入到該狀態;
  • TIDYING:如果所有的任務都已終止了,workerCount (有效線程數) 為0,線程池進入該狀態后會調用 terminated() 方法進入TERMINATED 狀態。
  • TERMINATED:在terminated() 方法執行完后進入該狀態,默認terminated()方法中什么也沒有做。

進入TERMINATED的條件如下:線程池不是RUNNING狀態;

               線程池狀態不是TIDYING狀態或TERMINATED狀態;

     如果線程池狀態是SHUTDOWN並且workerQueue為空;

              workerCount為0;

              設置TIDYING狀態成功。

線程池的生命周期流程圖


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM