溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

java中線程的狀態(tài)有哪些

發(fā)布時間:2020-12-04 16:38:30 來源:億速云 閱讀:125 作者:Leah 欄目:編程語言

java中線程的狀態(tài)有哪些?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

線程可以有六種狀態(tài):

  1.New(新創(chuàng)建)

  2.Runnable(可運行)(運行)

  3.Blocked(被阻塞)

  4.Waiting(等待)

  5.Timed waiting(計時等待)

  6.Terminated(被終止)

新創(chuàng)建線程:

  當(dāng)用new操作符創(chuàng)建一個新線程時,如new Thread(r),該線程還沒有開始運行,它的當(dāng)前狀態(tài)為new,在線程運行之前還有一些基礎(chǔ)工作要做。

可運行線程:

  一旦線程調(diào)用start方法,線程處于runnable狀態(tài)。在這個狀態(tài)下的線程可能正在運行也可能沒有運行(也就是說Java規(guī)范中正在運行的線程仍然處于可運行狀態(tài))。在線程運行之后或者從阻塞、等待或睡眠狀態(tài)回來后,也返回到可運行狀態(tài)。

被阻塞線程:

  這個狀態(tài)下, 是在多個線程有同步操作的場景, 比如正在等待另一個線程的synchronized 塊的執(zhí)行釋放, 或者可重入的 synchronized塊里別人調(diào)用wait() 方法, 也就是線程在等待進入臨界區(qū)。

等待線程:

  這個狀態(tài)下是指線程擁有了某個鎖之后, 調(diào)用了它的wait方法,或者線程調(diào)用了join方法 join了另外的線程, 等待被他join的線程執(zhí)行結(jié)束的狀態(tài)。這里要區(qū)分阻塞狀態(tài) 和等待狀態(tài)的區(qū)別, 一個是在臨界點外面等待進入, 一個是在臨界點里面wait。

計時等待線程:

  當(dāng)線程調(diào)用帶有超時參數(shù)的方法時會導(dǎo)致線程進入計時等待狀態(tài),帶有超市參數(shù)的方法有Thread.sleep、Object.wait、Thread.join、Lock.tryLock以及Condition.await的計時版。

被終止的線程:

  1)線程因為run方法正常退出而自然死亡。

  2)因為一個沒有捕獲的異常終止了run方法而意外死亡。

  線程狀態(tài)之間的轉(zhuǎn)換:

           java中線程的狀態(tài)有哪些

看完上述內(nèi)容,你們掌握java中線程的狀態(tài)有哪些的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI