什么是死锁(Deadlock)?如何定位死锁?

死锁是指两个或者两个以上的进程(线程)在执行过程中,由于竞争资源而造成的阻塞问题,若无外力作用下,他们将无法推进下去。此时系统称为死锁状态
实际定位死锁问题的思路
1.首先需要确定java进程是否发生死锁。
2.打开jvisualvm工具,专门分析JVMCPU,内存使用情况,以及线程的运行信息查看当前java进程各个线程运行的状态(颜色)。
3.通过jvisualvm的线程dump或者jstack命令,把当前java进程所有线程的调用堆栈信息打印出来。
4.分析main线程和子线程有没有关键短语: waiting for(资源地址) waiting to lock(资源地址)5.看线程函数调用栈,定位到源码上,具体问题具体分析。

你可能感兴趣的