死锁的产生原因和避免死锁
一、死锁产生的原因:
1)、因为系统的资源不足,不能满足进程的资源请求,会导致多个线程同时争夺一个资源
2)、进程运行推进的顺序不合适
3)、资源分配不当,有的进程资源分配太少,会因为争夺资源而陷入死锁
二、死锁产生的场景:
1)、多个线程:彼此申请对方资源不足而导致的死锁,A申请B的锁的时候,因为锁被占用所以会把A挂起等待B释放锁,同时B申请A的 锁,同样因为A的锁锁被占用,B会被挂起等待,都被挂起没有机会释放锁,则进入了死锁。
2)、单个线程:有自己的锁,但是还要申请新锁,在申请新锁的时候,因为锁被占用,所以会被挂起等待,但是锁是被自己占用,而自己又被挂起,没机会释放锁,则会进入死锁。