显示,如果我们将谷歌类似的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