java并发编程实战(4)-活跃性危险:死锁

死锁:

   java程序无法从死锁中恢复过来,在设计时一定要排除有可能发生死锁的地方。

1、锁顺序死锁:

    如果所有线程都以固定的顺序来获取锁,那么就不会出现死锁。

    A、B两个锁,方法1是先锁A,再锁B,方法2是先锁B,再锁A。

    线程1调用方法1锁住了 A ,尝试去获取B ,线程2调用方法2锁住了 B,尝试去获取 A 

2、动态的锁顺序死锁:

    由于参数的传递不可控,导致锁顺序死锁。

 3、协助对象之间发生死锁

    如果在持有锁时调用某个外部方法,那么将出现活跃性问题。在这个外部方法中可能会获取其他锁(可能会产生死锁),或者阻塞时间过长,导致其他线程无法及时获取当前被持有的锁。

4、开发调用

    调用某个方法时不需要持有锁,那么这种调用被称为开发调用。尽可能的不要在方法体上直接加同步锁,而是在需要被保护涉及共享状态的操作上加锁。

5、

 

转载于:https://my.oschina.net/u/1259702/blog/1523070

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值