AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

線程包括哪些狀態,狀態之間是如何變化?

來源: 責編: 時間:2023-11-30 09:28:45 237觀看
導讀1. 線程狀態-六種狀態線程的狀態可以參考JDK中的Thread類中的枚舉State,存在六種狀態public enum State {//尚未啟動的線程的線程狀態 NEW, //可運行線程的線程狀態 RUNNABLE,//線程阻塞等待監視器鎖的線程狀態 B

1. 線程狀態-六種狀態

線程的狀態可以參考JDK中的Thread類中的枚舉State,存在六種狀態PZl28資訊網——每日最新資訊28at.com

public enum State {//尚未啟動的線程的線程狀態  NEW,  //可運行線程的線程狀態  RUNNABLE,//線程阻塞等待監視器鎖的線程狀態  BLOCKED,//等待線程的線程狀態  WAITING,//具有指定等待時間的等待線程的線程狀態(有限等待)  TIMED_WAITING, //已終止線程的線程狀態。線程已完成執行  TERMINATED;}

PZl28資訊網——每日最新資訊28at.com

六種狀態介紹:

PZl28資訊網——每日最新資訊28at.com

新建(NEW)

  • 當一個線程對象被創建,但還未調用 start 方法時處于新建狀態
  • 此時未與操作系統底層線程關聯

可運行(RUNNABLE):

  • 調用了 start 方法,就會由新建進入可運行
  • 此時與底層線程關聯,由操作系統調度執行

終結(TERMINATED)

  • 線程內代碼已經執行完畢,由可運行進入終結
  • 此時會取消與底層線程關聯

阻塞(BLOCKED)

  • 當獲取鎖失敗后,由可運行進入 Monitor 的阻塞隊列阻塞,此時不占用 cpu 時間
  • 當持鎖線程釋放鎖時,會按照一定規則喚醒阻塞隊列中的阻塞線程,喚醒后的線程進入可運行狀態

等待(WAITING)

  • 當獲取鎖成功后,但由于條件不滿足,調用了 wait() 方法,此時從可運行狀態釋放鎖進入 Monitor 等待集合等待,同樣不占用 cpu 時間
  • 當其它持鎖線程調用 notify() 或 notifyAll() 方法,會按照一定規則喚醒等待集合中的等待線程,恢復為可運行狀態

有時限等待(TIMED_WAITING)

  • 當獲取鎖成功后,但由于條件不滿足,調用了 wait(long) 方法,此時從可運行狀態釋放鎖進入 Monitor 等待集合進行有時限等待,同樣不占用 cpu 時間
  • 當其它持鎖線程調用 notify() 或 notifyAll() 方法,會按照一定規則喚醒等待集合中的有時限等待線程,恢復為可運行狀態,并重新去競爭鎖
  • 如果等待超時,也會從有時限等待狀態恢復為可運行狀態,并重新去競爭鎖
  • 還有一種情況是調用 sleep(long) 方法也會從可運行狀態進入有時限等待狀態,但與 Monitor 無關,不需要主動喚醒,超時時間到自然恢復為可運行狀態

其它情況(只需了解)

  • 可以用 interrupt() 方法打斷等待、有時限等待的線程,讓它們恢復為可運行狀態
  • park,unpark 等方法也可以讓線程等待和喚醒

2. 線程狀態-五種狀態

五種狀態的說法來自于操作系統層面的劃分

PZl28資訊網——每日最新資訊28at.com

  • 運行態:分到 cpu 時間,能真正執行線程內代碼的
  • 就緒態:有資格分到 cpu 時間,但還未輪到它的
  • 阻塞態:沒資格分到 cpu 時間的
  1. 涵蓋了 java 狀態中提到的阻塞等待有時限等待
  2. 多出了阻塞 I/O,指線程在調用阻塞 I/O 時,實際活由 I/O 設備完成,此時線程無事可做,只能干等
  • 新建與終結態:與 java 中同名狀態類似,不再啰嗦

3. wait和sleep方法的不同?

共同點

wait() ,wait(long) 和 sleep(long) 的效果都是讓當前線程暫時放棄 CPU 的使用權,進入阻塞狀態PZl28資訊網——每日最新資訊28at.com

不同點

1.方法歸屬不同PZl28資訊網——每日最新資訊28at.com

  • sleep(long) 是 Thread 的靜態方法
  • 而 wait(),wait(long) 都是 Object 的成員方法,每個對象都有 醒來時機不同
  • 執行 sleep(long) 和 wait(long) 的線程都會在等待相應毫秒后醒來
  • wait(long) 和 wait() 還可以被 notify 喚醒,wait() 如果不喚醒就一直等下去
  • 它們都可以被打斷喚醒

2.鎖特性不同(重點)PZl28資訊網——每日最新資訊28at.com

  • wait 方法的調用必須先獲取 wait 對象的鎖,而 sleep 則無此限制
  • wait 方法執行后會釋放對象鎖,允許其它線程獲得該對象鎖(我放棄 cpu,但你們還可以用)
  • 而 sleep 如果在 synchronized 代碼塊中執行,并不會釋放對象鎖(我放棄 cpu,你們也用不了)
3. 線程狀態面試題

面試官:線程包括哪些狀態,狀態之間是如何變化的?PZl28資訊網——每日最新資訊28at.com

候選人:

在JDK中的Thread類中的枚舉State里面定義了6中線程的狀態分別是:新建、可運行、終結、阻塞、等待和有時限等待六種。PZl28資訊網——每日最新資訊28at.com

關于線程的狀態切換情況比較多。我分別介紹一下:PZl28資訊網——每日最新資訊28at.com

當一個線程對象被創建,但還未調用 start 方法時處于新建狀態,調用了 start 方法,就會由新建進入可運行狀態。如果線程內代碼已經執行完畢,由可運行進入終結狀態。當然這些是一個線程正常執行情況。PZl28資訊網——每日最新資訊28at.com

如果線程獲取鎖失敗后,由可運行進入 Monitor 的阻塞隊列阻塞,只有當持鎖線程釋放鎖時,會按照一定規則喚醒阻塞隊列中的阻塞線程,喚醒后的線程進入可運行狀態。PZl28資訊網——每日最新資訊28at.com

如果線程獲取鎖成功后,但由于條件不滿足,調用了 wait() 方法,此時從可運行狀態釋放鎖等待狀態,當其它持鎖線程調用 notify() 或 notifyAll() 方法,會恢復為可運行狀態。PZl28資訊網——每日最新資訊28at.com

還有一種情況是調用 sleep(long) 方法也會從可運行狀態進入有時限等待狀態,不需要主動喚醒,超時時間到自然恢復為可運行狀態。PZl28資訊網——每日最新資訊28at.com


PZl28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-35299-0.html線程包括哪些狀態,狀態之間是如何變化?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 說一下線程池的核心參數,線程池的執行原理

下一篇: Keras 3.0正式發布!一統TF/PyTorch/Jax三大后端框架,網友:改變游戲規則

標簽:
  • 熱門焦點
  • 鴻蒙OS 4.0公測機型公布:甚至連nova6都支持

    華為全新的HarmonyOS 4.0操作系統將于今天下午正式登場,官方在發布會之前也已經正式給出了可升級的機型產品,這意味著這些機型會率先支持升級享用。這次的HarmonyOS 4.0支持
  • 一加Ace2 Pro官宣:普及16G內存 引領24G

    一加官方今天繼續為本月發布的新機一加Ace2 Pro帶來預熱,公布了內存方面的信息。“淘汰 8GB ,12GB 起步,16GB 普及,24GB 引領,還有呢?#一加Ace2Pro#,2023 年 8 月,敬請期待。”同時
  • Redmi Pad評測:紅米充滿野心的一次嘗試

    從Note系列到K系列,從藍牙耳機到筆記本電腦,紅米不知不覺之間也已經形成了自己頗有競爭力的產品體系,在中端和次旗艦市場上甚至要比小米新機的表現來得更好,正所謂“大丈夫生居
  • 一文看懂為蘋果Vision Pro開發應用程序

    譯者 | 布加迪審校 | 重樓蘋果的Vision Pro是一款混合現實(MR)頭戴設備。Vision Pro結合了虛擬現實(VR)和增強現實(AR)的沉浸感。其高分辨率顯示屏、先進的傳感器和強大的處理能力
  • 服務存儲設計模式:Cache-Aside模式

    Cache-Aside模式一種常用的緩存方式,通常是把數據從主存儲加載到KV緩存中,加速后續的訪問。在存在重復度的場景,Cache-Aside可以提升服務性能,降低底層存儲的壓力,缺點是緩存和底
  • 19個 JavaScript 單行代碼技巧,讓你看起來像個專業人士

    今天這篇文章跟大家分享18個JS單行代碼,你只需花幾分鐘時間,即可幫助您了解一些您可能不知道的 JS 知識,如果您已經知道了,就當作復習一下,古人云,溫故而知新嘛。現在,我們就開始今
  • 雅柏威士忌多款單品價格大跌,泥煤頂流也不香了?

    來源 | 烈酒商業觀察編 | 肖海林今年以來,威士忌市場開始出現了降溫跡象,越來越多不斷暴漲的網紅威士忌也開始悄然回歸市場理性。近日,LVMH集團旗下蘇格蘭威士忌品牌雅柏(Ardbeg
  • “又被陳思誠騙了”

    作者|張思齊 出品|眾面(ID:ZhongMian_ZM)如今的國產懸疑電影,成了陳思誠的天下。最近大爆電影《消失的她》票房突破30億斷層奪魁暑期檔,陳思誠再度風頭無兩。你可以說陳思誠的
  • 華為HarmonyOS 4.0將于8月4日發布 或搭載AI大模型技術

    華為宣布HarmonyOS4.0將于8月4日正式發布。此前,華為已經針對開發者公布了HarmonyOS4.0,以便于開發者提前進行適配,也因此被曝光出了一些新系統的特性
Top