java并发:关于死锁我的一些想法

现在回到你的小学 ,那时你8岁上一年级, 正在为小明不借给你橡皮而不高兴。

故事是这样的:

你:小明借你橡皮给我用一下吧!
小明:不借,你上次都没借给我,你借给我,我在借给你。
你:等我有橡皮在借给你吧,你先借我用一下。
小明:你要先借给我,我才借给你。
你:你要先借给我,我才借给你。
小明:你要先借给我,我才借给你。
......

也许那时你还不知道编程中有一个和上面场景类似的概念叫作:‘死锁’

问题的关键在哪?
聪明的你已经发现了,你没橡皮,而小明说你要先借给他橡皮用。
有没有什么解决办法吗?
你们两个人要有一个人让步,或出现一个中间者。


1.首先考虑让步:

  • 你将橡皮借给小明,显然目前你没有没有办法借给他,解决方案:买一块借给他……
  • 小明将橡皮借给你

2.然后考虑中间者:

  • 小李看你正不高兴,了解之后将橡皮借给了你,你将橡皮借给了小明,然后小明将橡皮借给了你

显然上述不管哪种方式,都没有真正的解决问题, 而是退回到了你借橡皮的本身,但是有时候退后一步也许在另一个层面是一种进步。

总结:
‘死锁’是指两个人互掐谁也不让谁
如何避免‘死锁’:

  • 其中一人做出让步(打倒其中一个)
  • 避免两人见面
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值