一、死锁原因:
1、资源不够
2、进程推进顺序不当
3、资源分配不当
二、死锁的必要条件
1、互斥条件:一个资源同一时刻只能被一个进程使用
2、请求与保持:对申请的资源进行等待,对已占有的资源不释放
3、不剥夺条件:进程已获得资源,在未使用完,不可被其它进程抢占
4、循环等待:进程间形成头尾衔接,循环等待条件
三、检测方法:
准备两个容器或者列表:A和B
A存储线程正在申请的锁
B存储线程已经持有的锁
检查A容器中正在申请的锁是否被其它线程所使用,并找出这些线程
检查B容器中已经持有的锁是否被这些线程所申请。