首页 / JAVA / java-线程转储被阻止并锁定
java-线程转储被阻止并锁定
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-线程转储被阻止并锁定,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2006字,纯文字阅读大概需要3分钟。
内容图文
![java-线程转储被阻止并锁定](/upload/InfoBanner/zyjiaocheng/678/6dfa5c810ce140868a2aad6020c7e3a4.jpg)
这类似于Java thread dump: BLOCKED thread without “waiting to lock …”.
基本上,我看到了一个BLOCKED线程,但是它具有等待的锁:
"pool-1-thread-60" prio=10 tid=0x00007fbf10017000 nid=0x210 waiting for monitor entry [0x00007fbed64e3000]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.apache.log4j.Category.callAppenders(Category.java:204)
- locked <0x0000000742444ad0> (a org.apache.log4j.Logger)
at org.apache.log4j.Category.forcedLog(Category.java:391)
at org.apache.log4j.Category.info(Category.java:666)
...
我希望看到-等待锁定< 0x0000000742444ad0> …而不是-锁定….另一个问题表明是垃圾回收的原因,但是如果那样的话,不是所有线程都被阻塞了吗?还有其他线程是可运行的.另外,我怎么能证明是这种情况?为什么这是观察到的行为?我不想盲目地假设它是垃圾收集器,只是几天后才发现它是其他东西.
==辅助信息==
尽管我认为与当前问题无关,但这是上述转储来自的代码部分.
for(Category c = this; c != null; c=c.parent) {
// Protected against simultaneous call to addAppender, removeAppender,...
synchronized(c) { //line 204
if(c.aai != null) {
writes += c.aai.appendLoopOnAppenders(event);
}
if(!c.additive) {
break;
}
}
}
显然,在那条线上需要获得一个锁.但是,当线程在此监视器上真正被阻塞时,线程转储中的输出看起来像(来自同一转储):
"pool-1-thread-44" prio=10 tid=0x00007fbef0051000 nid=0x200 waiting for monitor entry [0x00007fbed74f3000]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.apache.log4j.Category.callAppenders(Category.java:204)
- waiting to lock <0x0000000742444ad0> (a org.apache.log4j.Logger)
at org.apache.log4j.Category.forcedLog(Category.java:391)
at org.apache.log4j.Category.info(Category.java:666)
...
我感兴趣的转储部分看起来有所不同(“锁定”而不是“等待锁定”).我调试了许多死锁,并查看了许多线程转储.我总是看到的是“等待锁定”.我从未见过“锁定”线程,但仍“等待监视器进入”线程,我想知道这意味着什么.
解决方法:
这是Oracle HotSpot JVM中的一个已知错误.就像您说的那样,在堆栈跟踪中您看到的位置-锁定了< 0x00007f3e9a0b3830>它实际上应该说-等待锁定< 0x00007f3e9a0b3830>因为线程尚未获得相关的锁.
有关更多详细信息,请参见this bug.
内容总结
以上是互联网集市为您收集整理的java-线程转储被阻止并锁定全部内容,希望文章能够帮你解决java-线程转储被阻止并锁定所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。