死锁

死锁是指由于两个或者多个线程互相持有对方所需要的资源,导致这些线程处于等待状态,无法前往执行。

1、产生死锁的条件

1.1、互斥条件:一个资源只能被一个线程占用,直到被该线程释放;

1.2、请求和保持条件:一个线程因请求被占用资源而发生阻塞时,对已获得的资源保持不放;

1.3、不剥夺条件:任何一个资源在没被该线程释放之前,任何其他线程都无法对他剥夺占用 ;

1.4、循环等待条件:当发生死锁时,所等待的线程必定会形成一个环路(类似于死循环),造成永久阻塞。

2、避免死锁的方法

2.1、加锁顺序:如果能确保所有的线程都是按照相同的顺序获得锁,那么死锁就不会发生;

2.2、加锁时限:若一个线程没有在给定的时限内成功获得所有需要的锁,则会进行回退并释放所有已经获得的锁,然后等待一段随机的时间再重试;

2.3、死锁检测。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值