为了账号安全,请及时绑定邮箱和手机立即绑定

TimerThread 是否导致死锁发生?

TimerThread 是否导致死锁发生?

桃花长相依 2021-09-29 10:36:24
Timer-2 线程正在等待 0x00000000e1a23398,并且它还锁定了 0x00000000e1a23398。这种情况会不会导致 Timer-2 线程死锁?有人可以为我解释一下吗?
查看完整描述

1 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

这不是僵局的证据。

Timer-2 已获取TaskQueue对象上的锁并正在等待同一对象上的通知。事实上,如果线程在它调用的Object.wait()那一点上没有持有锁,它就会得到一个IllegalMonitorStateException.

我并不是说您的应用程序根本没有陷入僵局。但是,两个线程“Timer-1”和“Timer2-”都在等待其他线程通知它们。这不是典型的死锁,其中两个线程将各自等待另一个释放锁。


我还能弄清楚什么?

好吧,从查看代码java.util.Timer

  • “Timer-2”线程只是等待下一次定时器触发。对于Timer.

  • “Timer-1”线程正在执行定时器任务。它似乎试图创建到(大概)远程服务的 NSQ 连接。如果它被阻塞,那大概意味着它试图连接的服务由于某种原因无法访问。

没有更多可以从堆栈转储中收集到的信息……无需深入研究“com.trendrr.nsq”源代码。


有什么想法可以用来找出原因吗?

  1. 查看日志文件。

  2. 检查配置(或其他)以找出它尝试连接的服务的主机/端口。

  3. 检查服务是否正在运行

  4. 检查它是否可以从客户端访问

  5. 深入了解源代码

  6. 调试、挠头等等。

  7. 作为最后的手段,聘请顾问。


查看完整回答
反对 回复 2021-09-29
  • 1 回答
  • 0 关注
  • 174 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信