TimerThread 是否导致死锁发生?
Is the TimerThread cause DeadLock happend?
Timer-2 线程正在等待 0x00000000e1a23398,它还锁定了 0x00000000e1a23398。这种情况会不会导致Timer-2线程死锁?
谁能帮我解释一下?
这不是死锁的证据。
Timer-2 已获取 TaskQueue
对象上的锁,正在等待同一对象上的通知。事实上,如果线程在调用 Object.wait()
时没有持有锁,它就会得到一个 IllegalMonitorStateException
.
我并不是说您的应用程序完全没有死锁。但是,"Timer-1" 和 "Timer2-" 两个线程都在等待其他线程通知它们。这不是典型的死锁,两个线程各自等待对方释放锁。
我还能想出什么?
嗯,从java.util.Timer
的代码来看:
"Timer-2"线程只是在等待下一次定时器触发。对于 Timer
.
这是完全正常的行为
"Timer-1"线程正在执行定时器任务。它似乎正在尝试创建到(可能)远程服务的 NSQ 连接。如果它正在阻塞,则可能意味着它尝试连接的服务由于某种原因无法访问。
如果不深入研究 "com.trendrr.nsq" 源代码,就无法从堆栈转储中收集到更多信息。
Is there any idea that can be used to find the cause reason?
- 查看日志文件。
- 检查配置(或其他)以确定它尝试连接的服务的主机/端口。
- 检查服务是否 运行
- 检查它是否可以从客户端访问
- 深入研究源代码
- 调试、挠头等等。
- 万不得已,请聘请顾问。
Timer-2 线程正在等待 0x00000000e1a23398,它还锁定了 0x00000000e1a23398。这种情况会不会导致Timer-2线程死锁? 谁能帮我解释一下?
这不是死锁的证据。
Timer-2 已获取 TaskQueue
对象上的锁,正在等待同一对象上的通知。事实上,如果线程在调用 Object.wait()
时没有持有锁,它就会得到一个 IllegalMonitorStateException
.
我并不是说您的应用程序完全没有死锁。但是,"Timer-1" 和 "Timer2-" 两个线程都在等待其他线程通知它们。这不是典型的死锁,两个线程各自等待对方释放锁。
我还能想出什么?
嗯,从java.util.Timer
的代码来看:
"Timer-2"线程只是在等待下一次定时器触发。对于
Timer
. 这是完全正常的行为
"Timer-1"线程正在执行定时器任务。它似乎正在尝试创建到(可能)远程服务的 NSQ 连接。如果它正在阻塞,则可能意味着它尝试连接的服务由于某种原因无法访问。
如果不深入研究 "com.trendrr.nsq" 源代码,就无法从堆栈转储中收集到更多信息。
Is there any idea that can be used to find the cause reason?
- 查看日志文件。
- 检查配置(或其他)以确定它尝试连接的服务的主机/端口。
- 检查服务是否 运行
- 检查它是否可以从客户端访问
- 深入研究源代码
- 调试、挠头等等。
- 万不得已,请聘请顾问。