从线程 Dump 文件中看,应用线程都处于 runnable 状态,但实际上,程序却被挂起,不能继续往下执行。看哪位大神可以帮帮我,不胜感激。
关于你这个问题,我已经出了个总结性的文章,你可以参考一下,同时检查一下你的程序,看看是不是类似的问题。如果还有其他问题,可以随时找我讨论。
我记得之前“笨神”写过一篇类似的文章来说明类初始化的过程可能会产生死锁,可以去找一下笨神的公众号,或者直接@笨神 来回复这个问题。
从你截图的线程栈看起来,Thread-0 中 B 类正在执行 <clinit>,而 Thread-1 中 A 类正在执行 <clinit>,看起来像在类的初始化过程中出现了死锁。
类的初始化也会导致死锁吗?而且这两个线程不都是 runnable 的,如果死锁了,线程状态是不是应该是 BLOCKED 或者 WAITING 吗?
关于你这个问题,我已经出了个总结性的文章,你可以参考一下,同时检查一下你的程序,看看是不是类似的问题。如果还有其他问题,可以随时找我讨论。