了解引用处理程序线程
2022-09-01 19:24:04
我正在继续深入理解Java Thread的道路。不幸的是,我的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)
现在有一些问题接踵而至,对于其中一些,我知道答案,但我没有发布它,因为我想听听别人的意见:
- 引用处理程序线程应该做什么?
- 线程转储应该被认为是自下而上的,为什么堆栈跟踪从锁定开始,lock语句不应该至少在线程运行后出现吗?
- “原生方法”是什么意思?
- 为什么是“未知来源”,在这种情况下,线程转储无法调用源代码?
- 最后等待和锁定有相同的,为什么?
像往常一样,我恳请回答所有问题,以便我可以标记已回答。