線程有5個狀態
創建狀態: Thread thread = new Thread();
就緒狀態: thread.start();
運行狀態: CPU調度處於就緒狀態的線程時纔是進入運行狀態
阻塞狀態: 處於運行狀態中的線程由於某種原因,暫時放棄對CPU的使用權,停止執行,此時進入阻塞狀態,直到其進入到就緒狀態,才 有機會再次被CPU調用以進入到運行狀態。根據阻塞產生的原因不同,阻塞狀態又可以分爲三種:
1.等待阻塞 -- 運行狀態中的線程執行wait()方法,使本線程進入到等待阻塞狀態;
2.同步阻塞 -- 線程在獲取synchronized同步鎖失敗(因爲鎖被其它線程所佔用),它會進入同步阻塞狀態;
3.其他阻塞 -- 通過調用線程的sleep()或join()或發出了I/O請求時,線程會進入到阻塞狀態。當sleep()狀態超時、join()等待線程終止或者超時、或者I/O處理完畢時,線程重新轉入就緒狀態
死亡狀態: run方法執行完線程就死亡
部分內容參考文章:https://blog.csdn.net/xiaosheng900523/article/details/82964768