没理解“死锁”是怎么产生的,谢谢!

没理解“死锁”是怎么产生的,谢谢!

http://img1.sycdn.imooc.com//climg/5fbf8c5c09bf376b05580396.jpg


http://img1.sycdn.imooc.com//climg/5fbf8c6a09cac08c05520336.jpg



还是没理解“死锁”问题。

如上图,先赋值flag为false,走到消费时,一判断没生产出来呢,所以就开始等待了,这时走生产线程因为flag为false因而进行生产flag设置为true,由于线程交替运行这时再走消费线程然后再走生产线程并一对对输出出结果。那此时怎么会产生死锁问题呢?不都交替执行线程正常输出结果吗?不懂!



正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕雪 2020-11-27 09:34:05

​同学,你好“如上图,先赋值flag为false,走到消费时,一判断没生产出来呢,所以就开始等待了,这时走生产线程因为flag为false因而进行生产flag设置为true”这没错,这之后,就消费不了了,因为它会一直wait()下去,只要没有叫醒它,它就永远等下去了,不会去消费。祝学习愉快!

  • 提问者 Ceoking #1

    明白了,谢谢!

    2020-11-27 11:00:17
  • 提问者 Ceoking #2

    我要问的是:

    ①、到底是一个线程处于等待中并没有唤醒就会产生死锁还是程序的全部两个线程都处于等待中并没有唤醒才会产生死锁?(视频里老师讲的是都等待的)

    ②、如果是都等待的话那是怎么具体实现的呢?麻烦详细讲一下实现过程,谢谢!

    2020-11-28 09:26:03
  • 好帮手慕雪 回复 提问者 Ceoking #3

    1)都会死锁,但一般的一个线程,程序员并不会粗心到让它无限等待。容易出问题的就是多个线程处于等待中并没有唤醒产生的死锁。  2)如果实现什么?是指如果解决死锁吗?用完资源后,唤醒别人就可以了,可以参考本小节的最后内容部分。

    2020-11-28 18:43:28
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师