两个线程抢占同一资源问题

两个线程抢占同一资源问题

本章Test.java中最后演示了两个线程抢占一个资源的情况。
在SleepDemo中 线程启动方式一样,怎么就不是两个线程抢占一个资源呢?

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

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

2回答
飞思雨 2017-08-09 12:13:02

好像是这样:

int i=1 如果作为Runnable实现类的成员变量,并且主方法中只有一个Runnable实现类实例对象时,使用该对象的多个线程就会资源共享。

在SleepDemo中,虽然线程启动方式一样,但要注意Runnable实现类中int i=0是在for循环中作为局部变量出现的,之前老师是把int i=1放到方法外部作为成员变量时才出现多线程资源共享。

好帮手慕珊 2017-07-10 17:42:07

http://img1.sycdn.imooc.com/climg//59634b3f00016cee04950196.jpg

http://img1.sycdn.imooc.com/climg//59634b3f0001d56e04300205.jpg

第一个图有一个Queue的对象,两个线程共享了这个对象。

而第二个图并没有共享对象。

祝学习愉快!

  • 提问者 dievu #1
    第二个图中不是共享了 mt 这个对象么。。。
    2017-07-10 18:12:19
  • 慕粉1912332396 回复 提问者 dievu #2
    是共享了int i这个对象,如果int i是局部变量,每次调动start方法都因为 int=i而使得 i从1开始了
    2017-08-27 22:30:46
  • 我上面说错了,不好意思,是共享了mt 这个对象 ,但是共享了int i这个资源,如果int i是局部变量,每次调动start方法都因为 int=i而使得 i从1开始了
    2017-08-27 22:34:47
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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