您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關怎么在java中分析Thread的狀態,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
Java是一門面向對象編程語言,可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序。
1、NEW
每個線程,在堆內存中都有相應的Thread對象。Threadt=newThread();當Thread對象剛剛在堆內存中創建時,在調用t.start()方法之前,線程處于NEW狀態。就這種狀態而言,線程與一般java對象沒有什么不同,只是一個堆內存對象。
2、RUNNABLE
這種狀態意味著線程具有所有的運行條件,并在運行隊列中準備操作系統的調度或運行。這種狀態下的線程相對正常,但是如果線程長時間停留在這種狀態下,就不正常了,這表明線程運行的時間很長(有性能問題),或者線程不能一直執行(有線程饑餓問題)。
3、BLOCKED
線程等待獲得java對象的監視器(也稱為內置鎖),即線程等待進入synchronized保護的方法和代碼塊。synchronized用于保證原子性,任何時候最多只能從一個線程進入該臨界區域,其他線程只能排隊等待。
4、WAITING
處于線程狀態,等待事件的發生。只有滿足特定條件,才能獲得執行機會。這個特定的事件通常是另一個線程。也就是說,如果沒有特定的事件,那么處于這種狀態的線程一直在等待,無法獲得執行的機會。
5、TIMED_WAITING
在J.U.C中,許多與線程相關的類別,都提供了限時版和無限時版的API。TIMED_WAITING意味著線程調用了限時版的API,等待時間流逝。等待時間過后,線程也可以恢復運行。若線程進入WAITING狀態,則必須發生特定事件才能恢復運行;而在TIMED_WAITING的線程中,如果發生特定事件或時間流逝,則恢復運行。
6、TERMINATED
當線程執行完成后,run方法正常返回,或拋出運行異常而結束時,線程將停留在此狀態。此時線程只剩下Thread對象,沒什么用。
看完上述內容,你們對怎么在java中分析Thread的狀態有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。