死锁介绍
死锁
什么是死锁?
互相拿到对方的锁,同时又不能放弃当前的锁。指相互之间竞争相同资源的线程因为相互等待而导致永久阻塞。

死锁发生的原因
互 占 不 循:
- 互斥: 共享资源x和y只能被一个线程占用
- 占有且等待:占有且等待,线程 T1 已经取得共享资源 X,在等待共享资源 Y 的时候,不释放共享资源 X;
- 不可抢占:其他线程不能强行抢占线程 T1 占有的资源;
- 循环等待: 线程 T1 等待线程 T2 占有的资源,线程 T2 等待线程 T1 占有的资源,就是循环等待。
避免死锁的措施
上面说到发生死锁必须同时满足四个条件,那么,我们破坏其中一个条件,就可以解决死锁的问题。如果已经发生了死锁,一般没有什么好的方法来解决,只能通过重启应用,所以如果要解决死锁问题,最好的方式就是提前规避。
首先,我们肯定不能去破坏第一个条件,锁的作用就是要互斥。所以,只能去破坏其他三个条件。

浙公网安备 33010602011771号