我正在繼續深入理解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)
現在的一些問題是下面的,對一些人我知道答案,但我不張貼,因爲我想聽聽別人的意見:
- 什麼是指向處理器線程應該這樣做?
- 線程轉儲應該被視爲自下而上,爲什麼堆棧跟蹤以鎖定開始,至少在線程運行後不應該出現鎖定語句?
- 「本地方法」是指什麼?
- 爲什麼「未知源」,在這種情況下,線程轉儲無法調用源代碼?
- 最後等待和鎖定有相同的,爲什麼?
像往常一樣,我懇請回答所有問題,以便我可以標記回答。
呃...關於第5點,它是有道理的,我們可以說,當一個'等待'的聲明出現,然後在堆棧跟蹤一個'鎖'具有相同的地址總是出現? – Leonardo
好吧,如果你可以解釋更多關於問題1,我可以標記整體解決:-) – Leonardo