java Thread的狀態分析
執行緒的狀態是比較重要的,因此threadump顯示這些狀態,透過分析這些狀態,可以得到執行緒的執行狀況,發現可能存在的問題。
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的狀態分析,希望對大家有所幫助。更多Java學習指路:
本教程操作環境:windows7系統、java10版,DELL G3電腦。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2331/viewspace-2830045/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java執行緒的狀態+鎖分析Java執行緒
- 面經手冊 · 第20篇《Thread 執行緒,狀態轉換、方法使用、原理分析》thread執行緒
- Java執行緒的狀態Java執行緒
- Java序列化的狀態Java
- java執行緒的五大狀態,阻塞狀態詳解Java執行緒
- Java的型別化狀態機Java型別
- Java多執行緒之Thread原始碼分析Java執行緒thread原始碼
- Java多執行緒(04)執行緒狀態與上線文切換以及Thread方法介紹Java執行緒thread
- 【Java】執行緒的 6 種狀態Java執行緒
- Java 執行緒的5種狀態Java執行緒
- 三個例項演示 Java Thread Dump 日誌分析Javathread
- java狀態模式例項解析Java模式
- Flutter State Management狀態管理全面分析Flutter
- Flutter 狀態管理之 Redux,BLoC,Provider 的流程分析FlutterReduxBloCIDE
- Android/java 多執行緒(一)-Thread的使用以及原始碼分析AndroidJava執行緒thread原始碼
- Java 中的執行緒 threadJava執行緒thread
- Java執行緒狀態轉換Java執行緒
- 詳解Java執行緒池的ctl(執行緒池控制狀態)【原始碼分析】Java執行緒原始碼
- 如何使用jstack分析執行緒狀態JS執行緒
- BlueStore原始碼分析之事物狀態機原始碼
- Flutter狀態管理Provider(二)過程分析FlutterIDE
- Flutter 狀態管理框架 Provider 和 Get 分析Flutter框架IDE
- 自動查詢並分析快遞的物流狀態
- Java-關於ThreadJavathread
- Java之Thread類的常用方法 .sleep()Javathread
- Java Thread的join() 之刨根問底Javathread
- Java應用異常狀態監測Java
- Java | 靜態巢狀類(Static Nested Class)Java巢狀
- Java執行緒狀態及切換Java執行緒
- Java執行緒狀態及同步鎖Java執行緒
- java檢測當前CPU負載狀態的方法Java負載
- Flutter狀態管理-02-InheritedWidget資料共享的原理分析Flutter
- 淺談前端的狀態管理,以及anguar的狀態管理庫前端
- Three ways to create Multi Thread in JavathreadJava
- JAVA 執行緒狀態及轉化(轉)Java執行緒
- 折騰Java設計模式之狀態模式Java設計模式
- Java多執行緒-執行緒狀態Java執行緒
- Java的六種執行緒狀態及程式碼示例Java執行緒