死锁发生条件:
1、互斥使用,即当资源被一个线程使用时,别的线程无法使用;
2、不可抢占,资源请求者不能强制从资源占有者手中夺取资源,资源只能被资源持有者释放;
3、请求和保持,当资源请求者在请求其他资源的同时保持对原有资源的占有;
4、循环等待,存在一个等待队列,P1占有P2的资源,P2占有P3的资源,P3占有P1的资源。
多线程发生死锁的原因: