我拿了一个 Java 程序的线程转储,它说Found one Java-level deadlock
.
我可以自信地确认该程序中存在错误吗?
对我来说,听起来死锁是一个编程问题,唯一的解决方案是修复源代码。
我错了吗?是否存在死锁是程序执行的正常部分,而死锁最终会以某种方式消失的情况?
它是一个相当传统的 Java Web 应用程序,拥有数百个用户。相互等待的两个线程似乎是一个Tomcat请求工作者和一个Lucene索引作业,两者都使用sun.misc.Unsafe.park
. 据我所知,该程序没有任何线程监控功能。