顯示,如果我們將谷歌類似的Java線程狀態「,我們將看到大約這張圖:如何匹配理論線程狀態和狀態通過jvisualvm
但是,如果我們將打開jVisualVm我們會看到以下:
你能幫助meatch這些圖?睡眠狀態只是Thread.sleep()
?跑步的特例?
什麼公園狀態?(我試圖谷歌,但我感到困惑,因爲我只是第一個圖之前就知道)
顯示,如果我們將谷歌類似的Java線程狀態「,我們將看到大約這張圖:如何匹配理論線程狀態和狀態通過jvisualvm
但是,如果我們將打開jVisualVm我們會看到以下:
你能幫助meatch這些圖?睡眠狀態只是Thread.sleep()
?跑步的特例?
什麼公園狀態?(我試圖谷歌,但我感到困惑,因爲我只是第一個圖之前就知道)
該圖表示java.lang.Thread.State
枚舉。 The Javadoc is quite helpful to get an understanding of the mapping you seek。
的JVisualVM狀態代表了額外的狀態的描述,你會在一個線程轉儲看到,例如:
"Finalizer" daemon prio=8 tid=0x022f4000 nid=0xd14 in Object.wait() [0x044cf000]
java.lang.Thread.State: WAITING (on object monitor)
所以,你可以破譯的狀態你自己,如果你得到一個線程轉儲和比較狀態JVisualVM和線程名稱的線程轉儲。
這裏是你想要的映射:
Running
- >java.lang.Thread.State: RUNNABLE
Sleeping
- >java.lang.Thread.State: TIMED_WAITING (sleeping)
Wait
- >java.lang.Thread.State: WAITING TIMED_WAITING (on object monitor)
Park
- >java.lang.Thread.State: WAITING TIMED_WAITING (parking)
Monitor
- >java.lang.Thread.State: BLOCKED (on object monitor)
Park
狀態是WAITING
或TIMED_WAITING
的特例。與Wait
的區別在於Wait
發生在對象監視器上(即塊內的Object.wait()
)。另一方面,Park
通過Unsafe.park
從調度中移除線程而不需要保持監視器(即,它不需要塊)。
還不清楚。例如TIMED_WAITING與WAITING TIMED_WAITING。停車處? – gstackoverflow
你可以檢查我已經添加的JavaDoc鏈接。 'WAITING' - 等待線程的線程狀態。由於調用以下方法之一,線程處於等待狀態:沒有超時的Object.wait,沒有超時的Thread.join,LockSupport.park; 'TIMED_WAITING' - 具有指定等待時間的等待線程的線程狀態。線程處於定時等待狀態,因爲以指定的肯定等待時間調用以下方法之一:Thread.sleep,超時的Object.wait,超時的Thread.join,LockSupport.parkNanos,LockSupport。parkUntil – bashnesnos
@gstackoverflow我你能澄清詞組添加澄清了'Park'以及 – bashnesnos