您好,登錄后才能下訂單哦!
java中線程的狀態有哪些?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
線程可以有六種狀態:
1.New(新創建)
2.Runnable(可運行)(運行)
3.Blocked(被阻塞)
4.Waiting(等待)
5.Timed waiting(計時等待)
6.Terminated(被終止)
新創建線程:
當用new操作符創建一個新線程時,如new Thread(r),該線程還沒有開始運行,它的當前狀態為new,在線程運行之前還有一些基礎工作要做。
可運行線程:
一旦線程調用start方法,線程處于runnable狀態。在這個狀態下的線程可能正在運行也可能沒有運行(也就是說Java規范中正在運行的線程仍然處于可運行狀態)。在線程運行之后或者從阻塞、等待或睡眠狀態回來后,也返回到可運行狀態。
被阻塞線程:
這個狀態下, 是在多個線程有同步操作的場景, 比如正在等待另一個線程的synchronized 塊的執行釋放, 或者可重入的 synchronized塊里別人調用wait() 方法, 也就是線程在等待進入臨界區。
等待線程:
這個狀態下是指線程擁有了某個鎖之后, 調用了它的wait方法,或者線程調用了join方法 join了另外的線程, 等待被他join的線程執行結束的狀態。這里要區分阻塞狀態 和等待狀態的區別, 一個是在臨界點外面等待進入, 一個是在臨界點里面wait。
計時等待線程:
當線程調用帶有超時參數的方法時會導致線程進入計時等待狀態,帶有超市參數的方法有Thread.sleep、Object.wait、Thread.join、Lock.tryLock以及Condition.await的計時版。
被終止的線程:
1)線程因為run方法正常退出而自然死亡。
2)因為一個沒有捕獲的異常終止了run方法而意外死亡。
線程狀態之間的轉換:
看完上述內容,你們掌握java中線程的狀態有哪些的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。