線程有幾種狀态?
一般說有3種,但也有說4種的
就緒:線程配置設定了CPU以外的全部資源,等待獲得CPU排程
執行:線程獲得CPU,正在執行
阻塞:線程由于發生I/O或者其他的操作導緻無法繼續執行,就放棄處理機,轉入線程就緒隊列
挂起:由于終端請求,作業系統的要求等原因,導緻挂起。1.建立
4.死亡線程是一個動态執行的過程,它有一個從産生到死亡的過程,共五種狀态:
1、建立(new Thread)
當建立Thread類的一個執行個體(對象)時,此線程進入建立狀态(未被啟動)
例如:Thread t1=new Thread();
2、就緒(runnable)
線程已經被啟動,正在等待被配置設定給CPU時間片,也就是說此時線程正在就緒隊列中排隊等候得到CPU資源。例如:t1.start();
3、運作(running)
線程獲得CPU資源正在執行任務(run()方法),此時除非此線程自動放棄CPU資源或者有優先級更高的線程進入,線程将一直運作到結束。
4、死亡(dead)
當線程執行完畢或被其它線程殺死,線程就進入死亡狀态,這時線程不可能再進入就緒狀态等待執行。
java線程到底有多少種狀态
線程共有6種狀态:
NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED
分别對應于
建立、運作、阻塞、等待、帶逾時的等待、終止線程在執行過程中,可以處于下面幾種狀态:
就緒(runnable):線程準備運作,不一定立馬就能開始執行。
運作中(running):程序正在執行線程的代碼。
等待中(waiting):線程處于阻塞的狀态,等待外部的處理結束。
睡眠中(sleeping):線程被強制睡眠。