[英]Java JVM profiling, thread status - what does “Monitor” status mean?
我使用visualVM连接一个多线程Java应用程序,线程有4个状态,即运行,休眠,等待,监视。 这种监控状态意味着什么? 等待和监视器有什么区别?
这些状态与Thread.State
枚举中提到的相同。 “等待”意味着,正如文档所说:
由于调用以下方法之一,线程处于等待状态:
- Object.wait没有超时
- Thread.join没有超时
- LockSupport.park
“Monitor”是BLOCKED
状态,其中线程正在等待获取对象的锁定(因为它试图进入synchronized
块或方法,而另一个线程已经拥有相关的锁)。
这不是“监视”状态...它表示该线程处于Thread.State.BLOCKED
状态。 我看到还有另一个好的答案,我只想指出这个链接进行更深入的解释
监视器意味着线程正在等待获取对象的锁定。 例如,当一个线程正在运行一个synchronized方法而另一个线程试图在同一个对象上调用它时,它将无法在方法的第一次调用完成之后。 这是因为第一个线程在该对象上有一个监视器或锁,所以第二个线程必须等到它被释放。
来自Oracle线程教程 :
“同步是围绕一个称为内部锁或监视器锁的内部实体构建的。(API规范通常将此实体简称为”监视器“。)内部锁在同步的两个方面都发挥作用:强制执行对同步的独占访问。对象的状态和建立事先发生的关系,这对于可见性至关重要。“
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.