死锁

死锁的四个条件
(1)互斥条件,某一个资源在某一个时间段只能由一个线程占用,不能让两个或两个以上的线程占用
(2)不可抢占条件,线程获得资源在没有使用完毕之前,其他线程不能强行地夺走资源
(3)占有与申请条件,线程至少占有一个资源,但是又申请新的资源,由于该资源被另外的线程占有,该线程会阻塞
(4)循环等待,一个线程等待其他线程释放资源,其他的线程又在等待另外的线程释放资源,最后一个线程等待第一个线程释放资源

解决死锁
Object.wait()能使线程阻塞 同时释放资源
Object.notify()/notifyAll() 唤醒线程

死锁的预防:
(1)允许某些线程同时访问资源
(2) 允许某些线程强行夺取资源
(3)允许资源预分配策略
(4)线程进程按编号申请资源

死锁的避免:
安全序列:如果系统按照这种序列去分配资源,每个线程都能够顺序完成自己的需求,这样的序列成为安全序列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值