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

什么情况会发生死锁

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

如何发现死锁

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

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

如何避免死锁

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

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

(2)
geekgaogeekgao博主
上一篇 2021年3月7日 下午2:29
下一篇 2021年3月9日

发表回复

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

GitHub
分享本页
返回顶部

Warning: error_log(/usr/local/lighthouse/softwares/wordpress/wp-content/plugins/spider-analyser/#log/log-2117.txt): failed to open stream: No such file or directory in /usr/local/lighthouse/softwares/wordpress/wp-content/plugins/spider-analyser/spider.class.php on line 2900