【发布时间】:2011-10-05 08:39:08
【问题描述】:
我将继续深入了解 Java 线程。不幸的是,我的 Java 认证没有涵盖这部分,所以学习的唯一方法是发布一系列愚蠢的问题。经过这么多年的 Java 开发,我有时想知道我还有多少需要学习 :-)
我现在特别注意引用处理程序线程。
"Reference Handler" daemon prio=10 tid=0x02da3400 nid=0xb98 in Object.wait() [0x0302f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x1aac0320> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:485)
at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)
- locked <0x1aac0320> (a java.lang.ref.Reference$Lock)
下面是一些问题,其中一些我知道答案,但我没有发布它,因为我想听听其他人的意见:
- Reference Handler 线程应该做什么?
- 线程转储应该被认为是自下而上,为什么堆栈跟踪以locked开头,lock语句不应该至少在线程运行后出现?
- “本机方法”是什么意思?
- 为什么是“Unknown Source”,在这种情况下线程转储无法调用源代码?
- 最后waiting on和locked是一样的,为什么?
像往常一样,我恳请回答所有问题,以便我标记为已回答。
【问题讨论】:
标签: java reference thread-dump