死锁的笔记

1、死锁是什么

死锁是指两个或者两个以上的线程在执行过程中,互相持有对方所需要的的资源,导致这些线程都一直处于等待状态,如果没有外力的作用,他们将一直阻塞下去,就会进入永久阻塞状态。
在这里插入图片描述

2、产生死锁的原因

但死锁的发生也必须具备一定的条件,死锁的发生必须具备以下四个必要条件:

  1. 互斥,共享资源只能被一个线程持有。
  2. 占有且等待,线程1获得了资源X,在等待共享资源Y时,不释放共享资源X。
  3. 不可抢占,其他线程不可抢占已经获得资源的线程占有的资源。
  4. 循环等等待,线程1等待线程2持有的资源,线程2等待线程1持有的资源。

3、避免死锁的方法

死锁一旦发生,没有好的办法解决,只能通过重启应用。解决死锁的最好办法就是避免死锁,避免产生死锁的情况就能避免死锁的产生。
首先,条件1互斥是无法避免的,条件2占有且等待我们可以一次申请所有的共享资源,而不是一个一个资源去申请。对于条件3,当线程持有某个共享资源,再去申请另一个共享资源时,如果申请不到就先释放已经获得的共享资源,对于条件4,我们可以将申请共享资源按照次序,先申请小的在申请大的,这样就可以避免循环等待。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值