Java線程池有5中狀態: Running、ShutDown、Stop、Tidying、Terminated。
Running:線程池處在RUNNING狀態時,能夠接收新任務,以及對已添加的任務進行處理。
SHUTDOWN:線程池處在SHUTDOWN狀態時,不接收新任務,但能處理已添加的任務。
STOP:線程池處在STOP狀態時,不接收新任務,不處理已添加的任務,並且會中斷正在處理的任務。
TIDYING:當所有的任務已終止,ctl記錄的”任務數量”爲0,線程池會變爲TIDYING狀態。當線程池變爲TIDYING狀態時,會執行鉤子函數terminated()。terminated()在ThreadPoolExecutor類中是空的,若用戶想在線程池變爲TIDYING時,進行相應的處理;可以透過重載terminated()函數來實現。
TERMINATED:線程池徹底終止,就變成TERMINATED狀態。