【每日阅读】2021年3月8日-Java程序什么情况下会产生死锁,如何判断是否有死锁

真诚的希望您能留言与我交流,这会对我有非常大的帮助!

什么情况会发生死锁

  1. 互斥条件,要么你持有,要么我持有
  2. 互斥条件被长期持有,不会主动释放
  3. 循环依赖

如何发现死锁

使用jstack打印出线程堆栈,查看是否有循环依赖某个互斥条件。一些简单的死锁情况jstack还会直接打印出来说发现了死锁。

【每日阅读】2021年3月8日-Java程序什么情况下会产生死锁,如何判断是否有死锁插图1

如何避免死锁

  1. 不要使用多个锁
  2. 使用带超时时间的等待方法,不要无限时的拥有互斥条件
  3. 控制互斥条件的申请顺序,尽量保持一致

原创文章,作者:geekgao,如若转载,请注明出处:https://www.geekgao.cn/archives/2869

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

GitHub
分享本页
返回顶部