概念:某个任务在等地另外一个任务,后者又在等待别的任务,一直下去,直到这个链上的任务又在等第一个任务释放锁,这就得到了一个人任务之间互相等待的连续循环,没有哪个线程能够继续,叫死锁。
同时满足四个条件就发生死锁:
1.互斥条件,任务使用的资源中至少有一个是不能共享的
2.至少有一个任务它必须持有一个资源且正在等待获取一个当前被别的任务持有的资源
3.资源不能被任务抢占,任务必须把资源当做普通事件
4.必须有循环等待,这时,一个任务等待其他任务所持有的资源,而后者又在等待另外一个任务所持有的资源
也就是破坏上面条件中任何一个就可以规避死锁,最容易破坏4
具体案例参考 thinking in java 723