1贬媒、RUNNING
(1) 狀態(tài)說明:線程池處在RUNNING狀態(tài)時(shí)摧阅,能夠接收新任務(wù)侧甫,以及對(duì)已添加的任務(wù)(堵塞隊(duì)列中的任務(wù))進(jìn)行處理。?
(02) 狀態(tài)切換:線程池的初始化狀態(tài)是RUNNING康铭。換句話說廊谓,線程池被一旦被創(chuàng)建,就處于RUNNING狀態(tài)麻削,并且線程池中的任務(wù)數(shù)為0蒸痹!
2、 SHUTDOWN
(1) 狀態(tài)說明:線程池處在SHUTDOWN狀態(tài)時(shí)呛哟,不接收新任務(wù)叠荠,但能處理已添加的任務(wù)。?
(2) 狀態(tài)切換:調(diào)用線程池的shutdown()接口時(shí)扫责,線程池由RUNNING -> SHUTDOWN榛鼎。
3、STOP
(1) 狀態(tài)說明:線程池處在STOP狀態(tài)時(shí)鳖孤,不接收新任務(wù)者娱,不處理已添加的任務(wù),并且會(huì)中斷正在處理的任務(wù)苏揣。?
(2) 狀態(tài)切換:調(diào)用線程池的shutdownNow()接口時(shí)黄鳍,線程池由(RUNNING or SHUTDOWN ) -> STOP。
4平匈、TIDYING
(1) 狀態(tài)說明:當(dāng)所有的任務(wù)已終止框沟,ctl(有效線程數(shù))記錄的”任務(wù)數(shù)量”為0,線程池會(huì)變?yōu)門IDYING狀態(tài)增炭。當(dāng)線程池變?yōu)門IDYING狀態(tài)時(shí)忍燥,會(huì)執(zhí)行鉤子函數(shù)terminated()。terminated()在ThreadPoolExecutor類中是空的隙姿,若用戶想在線程池變?yōu)門IDYING時(shí)梅垄,進(jìn)行相應(yīng)的處理;可以通過重載terminated()函數(shù)來實(shí)現(xiàn)输玷。?
(2) 狀態(tài)切換:當(dāng)線程池在SHUTDOWN狀態(tài)下队丝,阻塞隊(duì)列為空并且線程池中執(zhí)行的任務(wù)也為空時(shí),就會(huì)由 SHUTDOWN -> TIDYING饲嗽。?
當(dāng)線程池在STOP狀態(tài)下炭玫,線程池中執(zhí)行的任務(wù)為空時(shí),就會(huì)由STOP -> TIDYING貌虾。
5、 TERMINATED
(1) 狀態(tài)說明:線程池徹底終止裙犹,就變成TERMINATED狀態(tài)尽狠。?
(2) 狀態(tài)切換:線程池處在TIDYING狀態(tài)時(shí)衔憨,執(zhí)行完terminated()之后,就會(huì)由 TIDYING -> TERMINATED袄膏。
方法