索引
什么情况会发生死锁
- 互斥条件,要么你持有,要么我持有
- 互斥条件被长期持有,不会主动释放
- 循环依赖
如何发现死锁
使用jstack打印出线程堆栈,查看是否有循环依赖某个互斥条件。一些简单的死锁情况jstack还会直接打印出来说发现了死锁。
如何避免死锁
- 不要使用多个锁
- 使用带超时时间的等待方法,不要无限时的拥有互斥条件
- 控制互斥条件的申请顺序,尽量保持一致
原创文章,作者:geekgao,如若转载,请注明出处:https://www.geekgao.cn/archives/2869