我一共有七个问题

我一共有七个问题

  1. 为什么我的读取会有这么多,生成和读取不能成对出现?

  2. 为什么有的时候会先读取再生成?

  3. 为什么随机生成数据不可以写在if(flag)里面?

  4. 为什么weather里面的读取数据read方法可以只写一个if(flag)和wait(),不写get数据也可以运行?

  5. 而且请问线程类继承Thread或添加接口Runnable效果是一样的吗?

  6. 为什么我看大家的程序开始设置flag都是false,true不可以吗,逻辑到底要怎么样才正确?

  7. 最后一个问题就是,我这个程序要怎么改才可以有演示效果那样的结果?

谢谢大家啦!!!!!

注意:由于上传顺序有误,看图顺序:32154

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

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

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

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

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


正在回答

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

2回答

1)赋值,赋反了哦,所以导致你的生成与读取不能成对儿的出现

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

2)另外System.out.print()要放在read()和generate()中写不要放在线程中。这也是不能成对儿出现的另一下原因。

3)是先生成数据还是先读取数据,这取决于你的flag初始值。这也是你问的第6个的问题。你得先生成数据啊,要不然去读什么呢?那怎么能先生成数据呢,那就得让generate()的flag那里不为真。也就是让初始值为假。

4)wait(100),wait(500)?你怎么知道500毫秒后就可以去读或写了?你是无法保证这一点的。把那个毫秒数去掉。

5)为什么会输出那么多的内容,这取决于你

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


6)线程类继承Thread或添加接口Runnable效果都是一样的。祝:学习愉快

  • LexieMIZUKI 提问者 #1
    哇,非常感谢了。 看完你的回答,我又有两个疑问了: 1.如果flag最初赋值为false,让generate里面的if(flag)为假,那么怎么生成数据能,最开始不是要先生成数据然后再读取吗? 2.wait里面的毫秒和sleep的毫秒意思有什么不一样呢?
    2019-03-10 09:16:01
  • LexieMIZUKI 提问者 #2
    对了,还有我看到你没有帮我解答主问题的第三和第四问,请帮我看看可以吗,谢谢大佬了!
    2019-03-10 09:19:31
  • irista23 回复 提问者 LexieMIZUKI #3
    生成数据和读取数据的方法是交替执行的,read()方法中会更改flag的值。wait和sleep最大的区别是wait调用后会让出cpu,sleep不会释放当前持有的对象锁,到指定时间后还会继续执行。
    2019-03-10 10:05:47
irista23 2019-03-10 10:40:18

第四个问题,因为run中执行了输出语句并输出w2对象,而w2又重写了toString()

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

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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