为什么会出现get和set都等待的情况

为什么会出现get和set都等待的情况

17分27秒时为什么进程进行到13时就停止了?flag要么为true,要么为flase,为什么会set和get都在等待呢?

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

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

1回答
好帮手慕酷酷 2019-08-16 13:54:24

同学你好,这里可以这样理解:

这里两个的线程在执行过程中,这时当前线程为false,而另一个线程可能flag还没执行到为true时,但是同一时间都想要争夺CPU资源来进行生产和消费,就造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。

就比如:两个人面对面过独木桥,甲和乙都已经在桥上走了一段距离,即占用了桥的资源,甲如果想通过独木桥的话,乙必须退出桥面让出桥的资源,让甲通过,但是乙不服,为什么让我先退出去,我还想先过去呢,于是就僵持不下,导致谁也过不了桥。所以产生互相等待的现象。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 裸泳的米粒 #1
    可是不是已经在set和get方法前面加上了Synchronize语句了吗,加上Synchronize 后不是一个没执行完一轮不会执行另一个进程吗?不然Synchronize 还有什么用呢
    2019-08-16 14:19:25
  • 好帮手慕酷酷 回复 提问者 裸泳的米粒 #2
    同学你好,这是因为线程自己调用了wait()方法进行等待了,所以会在中途执行另一个线程。如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
    2019-08-16 18:29:10
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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