答案 0 :(得分:2)
这不是僵局的证据。
定时器2已获得对TaskQueue
对象的锁定,并正在等待有关同一对象的通知。确实,如果线程未在其称为Object.wait()
的点上持有锁,那么它将获得IllegalMonitorStateException
。
我并不是说您的应用程序完全没有死锁。但是,两个线程“ Timer-1”和“ Timer2-”都在等待其他线程通知它们。这不是经典的死锁,在死锁中,两个线程将各自等待对方释放一个锁。
我还能找到什么?
好吧,通过查看java.util.Timer
的代码:
“ Timer-2”线程只是在等待下一次计时器触发。对于Timer
,这是完全正常的行为。
“ Timer-1”线程正在执行计时器任务。它似乎正在尝试创建与(可能是)远程服务的NSQ连接。如果阻塞,则可能意味着它试图连接的服务由于某种原因而无法访问。
如果不深入研究“ com.trendrr.nsq”源代码,可以从堆栈转储中收集到更多信息。
有什么想法可以用来找到原因吗?