死锁
因为我其他文章有贴过死锁的代码,就不贴了。说下什么是死锁。
举个生活的例子:两个女孩打架,互相揪着对方的头发不松手,让对方先放她才放。嗯,这个情况就是死锁。
死锁的必备条件
- 死锁必须至少具备两个及以上的锁对象
- 在不同的执行代码路径中,用到了2个及以上的锁对象。比如A代码路径用到C,D锁,B代码路径也用到了C,D锁
如何避免
- 少嵌套锁。比如说在同步代码块中尽量少去再嵌一层同步代码块
- 检查当前的代码执行路径,是否包含了两个及以上锁对象。如果有,检查这些锁的其他调用路径有哪些,其他路径如果也包含了两个及以上相同的锁对象,很可能会导致死锁,此种情况尽量避免