① java線程中的幾種狀態以及相互轉換
NEW:線程創建之後,但是還沒有啟動(notyetstarted)。
RUNNABLE:正在Java虛擬機下跑任務的線程的狀態。在RUNNABLE狀態下的線程可能會處於等待狀態,因為它正在等待一些系統資源的釋放,比如IO
BLOCKED:阻塞狀態,等待鎖的釋放,比如線程A進入了一個synchronized方法,線程B也想進入這個方法,但是這個方法的鎖已經被線程A獲取了,這個時候線程B就處於BLOCKED狀態
WAITING:等待狀態,處於等待狀態的線程是由於執行了3個方法中的任意方法。1.Object的wait方法,並且沒有使用timeout參數;2.Thread的join方法,沒有使用timeout參數3.LockSupport的park方法。處於waiting狀態的線程會等待另外一個線程處理特殊的行為。再舉個例子,如果一個線程調用了一個對象的wait方法,那麼這個線程就會處於waiting狀態直到另外一個線程調用這個對象的notify或者notifyAll方法後才會解除這個狀態
TIMED_WAITING:有等待時間的等待狀態,比如調用了以下幾個方法中的任意方法,並且指定了等待時間,線程就會處於這個狀態。1.Thread.sleep方法2.Object的wait方法,帶有時間3.Thread.join方法,帶有時間4.LockSupport的parkNanos方法,帶有時間5.LockSupport的parkUntil方法,帶有時間
TERMINATED:線程中止的狀態,這個線程已經完整地執行了它的任務
② JAVA中,線程有哪五個基本狀態他們之間如何讓轉化並簡述線程周期。
java中,每個線程都需經歷新生、就緒、運行、阻塞和死亡五種狀態,線程從新生到死亡的狀態變化稱為生命周期。
用new運算符和Thread類或其子類建立一個線程對象後,該線程就處於新生狀態。
③ 基於java 線程的幾種狀態
下面是java 線程的5種狀態:
1、新建(new)
新建一個線程的對象。
2、可運行(runable)
線程對象創建後,其他線程調用該線程的start方法。或者該線程位於可運行線程池中等待被線程調用,已獲取cpu的使用權。
3、運行(running)
可運行的線程獲取了cpu的使用權,執行程序代碼
4、阻塞(block)
由於某些原因該線程放棄了cpu的使用權。停止執行。除非線程進入可運行的狀態,才會有機會獲取cpu的使用權。
(1)等待阻塞:運行中的線程執行wait方法,這時候該線程會被放入等待隊列。
(2)同步阻塞:運行中的線程獲取同步鎖,如果該同步鎖被別的線程佔用,這個線程會成被放入鎖池,等待其他線程釋放同步鎖。
(3)其他阻塞:運行的線程執行sleep或者join方法這個線程會成為阻塞狀態。當sleep超時,join等待線程終止,該線程會進入可運行狀態。
5、死亡(dead)
線程run mian 執行完畢後,或者因為某些異常產生退出了 run 方法,該線程的生命周期結束。
④ JAVA中線程有哪五個基本狀態它們之間如何讓轉化
java中,每個線程都需經歷新生、就緒、運行、阻塞和死亡五種狀態,線程從新生到死亡的狀態變化稱為生命周期。
用new運算符和Thread類或其子類建立一個線程對象後,該線程就處於新生狀態。
新生--->就緒:通過調用start()方法
就緒--->運行:處於就緒狀態的線程一旦得到CPU,就進入運行狀態並自動調用自己的run()方法
運行--->阻塞:處於運行狀態的線程,執行sleep()方法,或等待I/O設備資源,讓出CPU並暫時中止自己運行,進入阻塞狀態
阻塞--->就緒:睡眠時間已到,或等待的I/O設備空閑下來,線程便進入就緒狀態,重新到就緒隊列中等待CPU。當再次獲得CPU時,便從原來中止位置開始繼續運行。
運行--->死亡:(1)(正常情況下)線程任務完成
(2)(非正常狀況)線程被強制性的中止,如通過執行stop()或destroy()方法來終止一個線程
⑤ java中線程的基本概念、線程的基本狀態以及狀態之間的關系
線程指在程序執行過程中,能夠執行程序代碼的一個執行單位,每個程序至少都有一個線程,也就是程序本身。
Java中的線程有四種狀態分別是:運行、就緒、掛起、結束
⑥ java線程有哪些狀態
新生、就緒、運行、阻塞和死亡
java中,每個線程都需經歷新生、就緒、運行、阻塞和死亡五種狀態,線程從新生到死亡的狀態變化稱為生命周期。
⑦ 線程的幾種狀態
Java中的線程的生命周期大體可分為5種狀態。
1、初始狀態(NEW):新創建了一個線程對象。
2、可運行(RUNNABLE):線程對象創建後,其他線程(比如main線程)調用了該對象的start()方法。該狀態的線程位於可運行線程池中,等待被線程調度選中,獲取cpu的使用權 。
3、運行(RUNNING):可運行狀態(runnable)的線程獲得了cpu 時間片(timeslice) ,執行程序代碼。
4. 阻塞(BLOCKED):阻塞狀態是指線程因為某種原因放棄了cpu 使用權,也即讓出了cpu timeslice,暫時停止運行。直到線程進入可運行(runnable)狀態,才有機會再次獲得cpu timeslice 轉到運行(running)狀態。阻塞的情況分三種:
(1)、等待阻塞:運行(running)的線程執行o.wait()方法,JVM會把該線程放入等待隊列(waitting queue)中。
(2)、同步阻塞:運行(running)的線程在獲取對象的同步鎖時,若該同步鎖被別的線程佔用,則JVM會把該線程放入鎖池(lock pool)中。
(3)、其他阻塞:運行(running)的線程執行Thread.sleep(long ms)或t.join()方法,或者發出了I/O請求時,JVM會把該線程置為阻塞狀態。當sleep()狀態超時、join()等待線程終止或者超時、或者I/O處理完畢時,線程重新轉入可運行(runnable)狀態。
5、死亡(DEAD):線程run()、main() 方法執行結束,或者因異常退出了run()方法,則該線程結束生命周期。死亡的線程不可再次復生。
⑧ java線程的幾種狀態
有5種
①newThread
②runnable
③running
④dead
⑤blocked
⑨ 線程狀態是5種還是6種
一般都是五種,但是變數要說需要的話,也有可能是六種的狀態
⑩ Java線程的幾種狀態
線程是一個動態執行的過程,它有一個從產生到死亡的過程,共五種狀態:
1、新建(new Thread)
當創建Thread類的一個實例(對象)時,此線程進入新建狀態(未被啟動)
例如:Thread t1=new Thread();
2、就緒(runnable)
線程已經被啟動,正在等待被分配給CPU時間片,也就是說此時線程正在就緒隊列中排隊等候得到CPU資源。例如:t1.start();
3、運行(running)
線程獲得CPU資源正在執行任務(run()方法),此時除非此線程自動放棄CPU資源或者有優先順序更高的線程進入,線程將一直運行到結束。
4、堵塞(blocked)
由於某種原因導致正在運行的線程讓出CPU並暫停自己的執行,即進入堵塞狀態。
正在睡眠:用sleep(long t) 方法可使線程進入睡眠方式。一個睡眠著的線程在指定的時間過去可進入就緒狀態。
正在等待:調用wait()方法。(調用notify()方法回到就緒狀態)
被另一個線程所阻塞:調用suspend()方法。(調用resume()方法恢復)
5、死亡(dead)
當線程執行完畢或被其它線程殺死,線程就進入死亡狀態,這時線程不可能再進入就緒狀態等待執行。
自然終止:正常運行run()方法後終止
異常終止:調用stop()方法讓一個線程終止運行