【发布时间】:2019-02-23 15:42:08
【问题描述】:
【问题讨论】:
【问题讨论】:
这不是死锁的证据。
Timer-2 已获得TaskQueue 对象的锁定,并正在等待同一对象的通知。事实上,如果线程在调用Object.wait() 时没有持有锁,它会得到IllegalMonitorStateException。
我并不是说您的应用程序根本没有陷入僵局。但是,两个线程“Timer-1”和“Timer2-”都在等待其他线程通知它们。这不是典型的死锁,两个线程都在等待对方释放锁。
我还能弄清楚什么?
嗯,从java.util.Timer的代码来看:
“Timer-2”线程只是在等待定时器的下一次触发。对于Timer,这是完全正常的行为。
“Timer-1”线程正在执行定时器任务。它似乎正在尝试创建与(可能)远程服务的 NSQ 连接。如果它被阻塞,那可能意味着它尝试连接的服务由于某种原因无法访问。
如果不深入研究“com.trendrr.nsq”源代码,就无法从堆栈转储中收集到更多信息。
有没有什么思路可以用来查找原因?
【讨论】: