1、RUNNING
- 狀態(tài)說明:線程池處于RUNNING狀態(tài)時,能夠接收新任務(wù)以及對已添加的任務(wù)進(jìn)行處理。
- 狀態(tài)切換:線程池的初始狀態(tài)為RUNNING。換句話說線程池一旦被創(chuàng)建,就處于RUNNING狀態(tài),且線程池中的任務(wù)數(shù)為0
private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0));
2、SHUTDOWN
- 狀態(tài)說明:線程池處于SHUTDOWN狀態(tài)時,不接收新任務(wù),但能處理已添加的任務(wù)
- 狀態(tài)切換:調(diào)用線程池的shutdown()接口時,線程池由RUNNING->SHUTDOWN
3、STOP
- 狀態(tài)說明:線程池處于STOP狀態(tài)時,不接收新任務(wù),不處理已添加的任務(wù),并且會中斷正在處理的任務(wù)
- 狀態(tài)切換:調(diào)用線程池的shutdownNow()接口時,線程池由(RUNNING)或者(SHUTDOWN)->STOP
4、TIDYING文章來源:http://www.zghlxwxcb.cn/news/detail-407753.html
- 狀態(tài)說明:當(dāng)所有的任務(wù)已終止,ctl記錄的任務(wù)數(shù)為0,線程池的狀態(tài)會變?yōu)門IDYING狀態(tài);當(dāng)線程池的狀態(tài)變?yōu)門IDYING狀態(tài)時,會調(diào)用鉤子函數(shù)terminated(),該方法在ThreadPoolExecutor中是空的,若用戶想在線程池變?yōu)門IDYING時進(jìn)行相應(yīng)的處理,就需要重載terminated()函數(shù)實(shí)現(xiàn)
- 狀態(tài)切換:當(dāng)線程池狀態(tài)為SHUTDOWN時,阻塞隊(duì)列為空并且線程池中執(zhí)行的任務(wù)也為空時,就會由SHUTDOWN->TIDYING
當(dāng)線程池為STOP時,線程池中執(zhí)行的任務(wù)為空時,就會又STOP->TIDYING
5、TERMINATED文章來源地址http://www.zghlxwxcb.cn/news/detail-407753.html
- 狀態(tài)說明:線程池徹底終止,就會變成TERMINATED狀態(tài)
- 狀態(tài)切換:線程池處于TIDYING狀態(tài)時,調(diào)用terminated()就會由TIDYING->TERMINATED
到了這里,關(guān)于線程池的五種狀態(tài)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!