某天线上程序出现了无响应的情况,在排除网络等因素之后,用jstack把堆栈信息打印出来,发现好多线程都被锁住了。
仔细看代码,正常情况下不会出现死锁,抛出异常情况下,不会执行解锁,因此需要在try后的finally执行解锁,问题修复。
结论:尽量不用锁,特别是要做HA的情况下;谨慎对待锁,一定要确保解锁代码会被执行
本文通过一次线上程序无响应故障的排查经历,介绍了如何使用jstack工具定位死锁问题,并提出了在代码中加入finally块来确保锁能被正确释放的方法。
某天线上程序出现了无响应的情况,在排除网络等因素之后,用jstack把堆栈信息打印出来,发现好多线程都被锁住了。
仔细看代码,正常情况下不会出现死锁,抛出异常情况下,不会执行解锁,因此需要在try后的finally执行解锁,问题修复。
结论:尽量不用锁,特别是要做HA的情况下;谨慎对待锁,一定要确保解锁代码会被执行
1315

被折叠的 条评论
为什么被折叠?
