1.新建( new ):新建立了乙個執行緒物件。
2.可執行( runnable ):執行緒物件建立後,其他執行緒(比如 main 執行緒)呼叫了該物件 的 start ()方法。該狀態的執行緒位於可執行執行緒池中,等待被執行緒排程選中,獲 取 cpu 的使用權 。
3.執行( running ):可執行狀態( runnable )的執行緒獲得了 cpu 時間片( timeslice ) ,執行程式**。
4.阻塞( block ):阻塞狀態是指執行緒因為某種原因放棄了 cpu 使用權,也即讓出了 cpu timeslice ,暫時停止執行。直到執行緒進入可執行( runnable )狀態,才有 機會再次獲得 cpu timeslice 轉到執行( running )狀態。阻塞的情況分三種:
(一). 等待阻塞:執行( running )的執行緒執行 o . wait ()方法, jvm 會把該執行緒放 入等待佇列( waitting queue )中。
(二). 同步阻塞:執行( running )的執行緒在獲取物件的同步鎖時,若該同步鎖 被別的執行緒占用,則 jvm 會把該執行緒放入鎖池( lock pool )中。
(三). 其他阻塞: 執行( running )的執行緒執行 thread . sleep ( long ms )或 t . join ()方法,或者發出了 i / o 請求時, jvm 會把該執行緒置為阻塞狀態。 當 sleep ()狀態超時、 join ()等待執行緒終止或者超時、或者 i / o 處理完畢時,執行緒重新轉入可執行( runnable )狀態。
5.死亡( dead ):執行緒 run ()、 main () 方法執行結束,或者因異常退出了 run ()方法,則該執行緒結束生命週期。死亡的執行緒不可再次復生。
介紹一下執行緒池
1.執行緒池就是預先建立一些執行緒,它們的集合稱為執行緒池 2.執行緒池可以很好地提高效能,在系統啟動時即建立大量空閒的執行緒,程式將乙個task給到執行緒池,執行緒池就會啟動一條執行緒拉力執行這個任務,執行結束後,該執行緒不會死亡,而實再次返回執行緒池成為空閒狀態,等待執行下乙個任務。3.執行緒的...
請描述一下Hadoop的shuffle過程
hadoop的shuffle過程分為map端和reduce端。map端 map端會處理輸入資料並產生中間結果,這個中間結果會寫到本地磁碟,而不是hdfs。每個map的輸出會先寫到記憶體緩衝區中,當寫入的資料達到設定的閾值時,系統將會啟動乙個執行緒將緩衝區的資料寫到磁碟,這個過程叫做spill。在sp...
40期 說一下執行緒池內部工作原理
多執行緒技術是服務端開發人員必須掌握的技術。執行緒的建立和銷毀,都涉及到系統呼叫,比較消耗系統資源,所以就引入了執行緒池技術,避免頻繁的執行緒建立和銷毀。在j a中有乙個executors工具類,可以為我們建立乙個執行緒池,其本質就是new了乙個threadpoolexecutor物件。執行緒池建立...