1 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
這不是僵局的證據(jù)。
Timer-2 已獲取TaskQueue
對象上的鎖并正在等待同一對象上的通知。事實(shí)上,如果線程在它調(diào)用的Object.wait()
那一點(diǎn)上沒有持有鎖,它就會得到一個(gè)IllegalMonitorStateException
.
我并不是說您的應(yīng)用程序根本沒有陷入僵局。但是,兩個(gè)線程“Timer-1”和“Timer2-”都在等待其他線程通知它們。這不是典型的死鎖,其中兩個(gè)線程將各自等待另一個(gè)釋放鎖。
我還能弄清楚什么?
好吧,從查看代碼java.util.Timer
:
“Timer-2”線程只是等待下一次定時(shí)器觸發(fā)。對于
Timer
.“Timer-1”線程正在執(zhí)行定時(shí)器任務(wù)。它似乎試圖創(chuàng)建到(大概)遠(yuǎn)程服務(wù)的 NSQ 連接。如果它被阻塞,那大概意味著它試圖連接的服務(wù)由于某種原因無法訪問。
沒有更多可以從堆棧轉(zhuǎn)儲中收集到的信息……無需深入研究“com.trendrr.nsq”源代碼。
有什么想法可以用來找出原因嗎?
查看日志文件。
檢查配置(或其他)以找出它嘗試連接的服務(wù)的主機(jī)/端口。
檢查服務(wù)是否正在運(yùn)行
檢查它是否可以從客戶端訪問
深入了解源代碼
調(diào)試、撓頭等等。
作為最后的手段,聘請顧問。
添加回答
舉報(bào)