Java:死锁及避免方法

死锁

因为我其他文章有贴过死锁的代码,就不贴了。说下什么是死锁。
举个生活的例子:两个女孩打架,互相揪着对方的头发不松手,让对方先放她才放。嗯,这个情况就是死锁。

死锁的必备条件

  1. 死锁必须至少具备两个及以上的锁对象
  2. 在不同的执行代码路径中,用到了2个及以上的锁对象。比如A代码路径用到C,D锁,B代码路径也用到了C,D锁

如何避免

  1. 少嵌套锁。比如说在同步代码块中尽量少去再嵌一层同步代码块
  2. 检查当前的代码执行路径,是否包含了两个及以上锁对象。如果有,检查这些锁的其他调用路径有哪些,其他路径如果也包含了两个及以上相同的锁对象,很可能会导致死锁,此种情况尽量避免
posted @ 2022-10-28 09:39  爱编程DE文兄  阅读(240)  评论(0编辑  收藏  举报