成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java多線程之線程狀態詳解之一

開發 后端
我們已經知道Java中線程一共有6種狀態,在正式開始介紹之前,先給大家介紹一個監控線程狀態的工具,也是JDK自帶的工具。通過這個工具,我們可以更清晰的看到線程此時此刻所處的狀態是什么。

[[442479]]

本文轉載自微信公眾號「我是開發者FTD」,作者FTD  。轉載本文請聯系我是開發者FTD公眾號。

從上一節,我們已經知道Java中線程一共有6種狀態,在正式開始介紹之前,先給大家介紹一個監控線程狀態的工具,也是JDK自帶的工具。通過這個工具,我們可以更清晰的看到線程此時此刻所處的狀態是什么。

找到 JDK 的安裝目錄,在bin目錄下可以找到JDK自帶的監控工具VisualVM,例如我的目錄是D:\Program Files\Java\jdk1.8.0_251\bin\jvisualvm.exe,如下圖所示:

雙擊打開VisualVM,如下圖所示:

從上圖可以看到,我本地起了五個Java應用,一個是VisualVM程序本身,一個就是IntelliJ IDE工具了,另外幾個是本地Java應用。

我們雙擊VisualVM,可以在右邊欄看到它的一個運行情況,我們選擇切換到線程標簽,就可以看到它當前正在運行的線程的整體情況了。如下圖所示:

我們在右邊欄的下方,選擇一個線程,可以看到當前線程是處于一個WAITING狀態,顯示是在一個LinkedList對象上處于了等待,如下圖所示:

注:截圖中下方的 Thread inspector 窗體是一個插件,默認是沒有安裝的,可在“菜單--工具--插件”下面找到它并安裝即可。如下圖所示:

注:我這里已經安裝過了, 所以會在已安裝那里顯示

好了,有了這個工具后,我們就可以通過它來分析線程的狀態了,接下來我們再來一起看下Java中的這6個狀態,首先從簡單的談起。

新建態(NEW)

當使用new Thread()創建一個新的線程,又還沒有開始執行(not yet started)它的時候就處于新建(NEW)狀態。這里所謂“開始執行”具體指顯式的調用線程類中的start方法。

注:你不能直接調用run方法,這樣的話還是在原線程上執行。只有調用start方法才會開啟新的執行線程,接著它會去調用run。

在start之后,線程進入RUNNABLE狀態,之后還可能會繼續轉換成其它狀態。

注:一個線程只能被start一次。

終止態(TERMINATED)

終止狀態,這個也沒什么好說的,線程執行完成后(completed execution)或者說線程退出了(exited),此時線程就進入了終止狀態。

其它狀態

余下的幾個狀態,由于無法簡單幾句說完,這里先作些簡介,后面會一一詳細介紹:

  • RUNNABLE:前面有提到,它指“正在Java虛擬機中執行”,可能是ready,也可能是running,總之是在runnable。
  • BLOCKED:等待監視器鎖(waiting for a monitor lock )

這是一種特殊的waiting,實際上就是被synchronized方法或者塊阻塞。monitor有些書上通常叫管程,我也不太確定要怎么叫它。這里叫成 監視器 也是取字面的意思。

  • WAITING:無限期等待另一個線程執行一個特別的動作。(waiting indefinitely for another thread to perform a particular action )

這里所謂的動作通常即是指“notify或是notifyAll”。

  • TIMED_WAITING:限時等待另一個線程執行一個動作。(waiting for another thread to perform an action for up to a specified waiting time )

如果沒有等到如“notify”之類的動作,時間到了也會自動退出這一狀態。

 

其他狀態我們在下篇開始一一詳解。

 

責任編輯:武曉燕 來源: 我是開發者FTD
相關推薦

2021-12-26 18:22:30

Java線程多線程

2021-12-14 08:28:08

Java多線程線程

2017-05-27 20:59:30

Java多線程synchronize

2021-04-26 06:54:15

Redis多線程單線程

2010-01-21 11:25:44

linux多線程線程資源

2010-03-16 17:16:38

Java多線程

2011-06-22 16:08:40

Qt 多線程 事件循環

2021-02-25 15:58:46

C++線程編程開發技術

2021-03-05 07:38:52

C++線程編程開發技術

2011-06-22 16:02:37

Qt 多線程 重入

2009-03-12 10:52:43

Java線程多線程

2013-06-07 16:30:08

iOS多線程iOS開發NSThread

2009-06-29 17:49:47

Java多線程

2017-05-31 14:03:07

Java多線程內置鎖與顯示鎖

2009-06-17 11:23:00

Java多線程

2017-05-08 11:46:15

Java多線程

2009-06-11 10:22:18

Java多線程

2022-05-20 10:20:17

Spring事務MyBatis

2013-07-16 10:12:14

iOS多線程多線程概念多線程入門

2021-03-28 09:12:58

多線程死鎖技術熱點
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99热精品国产 | 老头搡老女人毛片视频在线看 | 一级毛片在线播放 | 日韩三片| 日韩色视频| 久久99一区二区 | 免费一级欧美在线观看视频 | 欧美日韩免费视频 | 国产日韩欧美中文 | 中文字幕一区二区三区四区五区 | 亚洲一二三区在线观看 | 国产探花在线观看视频 | 日本特黄a级高清免费大片 特黄色一级毛片 | 一区二区三区 在线 | 亚洲精品欧美一区二区三区 | 九九视频在线观看 | 免费观看成人性生生活片 | 欧美精品在线免费观看 | 一区二区三区四区在线视频 | 国产精品99视频 | 精品国产乱码久久久久久蜜退臀 | 先锋资源亚洲 | 亚洲欧美精品国产一级在线 | 国产精品久久久久999 | 亚洲毛片在线观看 | 日韩高清三区 | 一区二区三区免费观看 | 国产精品黄 | 国产一区二区三区在线 | 一色桃子av一区二区 | 在线日韩精品视频 | 黄色av大片 | 日韩美av| 欧美一级视频在线观看 | 四虎影院一区二区 | 亚洲精品久久久一区二区三区 | 91精品一区二区三区久久久久久 | 国产精品99久久久久久久久久久久 | 成人二区| 久久激情视频 | 亚洲欧美综合精品另类天天更新 |