为什么我这个永远都不会从1开始

为什么我这个永远都不会从1开始

public class Weather {

int wd;
   int sd;
   boolean flag = false;

   public synchronized void get(){

if (!flag){
try {
wait();
           } catch (InterruptedException e) {
e.printStackTrace();
           }
}
System.out.println("读取天气速度:【温度:"+wd+",湿度:"+sd+"");
       flag = false;
       notifyAll();
   }

public synchronized void set(int wd,int sd){
if (flag){
try {
wait();
           } catch (InterruptedException e) {
e.printStackTrace();
           }
}
this.sd = sd;
       this.wd = wd;

       System.out.println("生成取天气速度:【温度:"+wd+",湿度:"+sd+"");
       flag = true;
       notifyAll();
   }


}
public class GenerateWeather extends Thread{

Weather weather;

   public GenerateWeather(Weather weather) {
this.weather = weather;
   }

@Override
   public void run() {
int wd = 0,sd = 0;
       while (true)

weather.set(wd++,sd++);
   }
}
public class ReadWeather extends Thread{

Weather weather;


   public ReadWeather(Weather weather) {
this.weather = weather;
   }

@Override
   public void run() {
while (true){
weather.get();
       }
}
}
public class main {
public static void main(String[] args) {
Weather weather = new Weather();
       GenerateWeather generateWeather = new GenerateWeather(weather);
       ReadWeather readWeather = new ReadWeather(weather);
       generateWeather.start();
       readWeather.start();

   }
}


正在回答

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

1回答

同学你好,1、数据是用0开始的,因循环的条件是true,则为死循环,当同学查询数据时,数据已经执行到很大了,所以查看起来数据比较大。同学可修改循环,使其循环100次进行查看。如下所示:

http://img1.sycdn.imooc.com//climg/60373a930973b29306520330.jpg

http://img1.sycdn.imooc.com//climg/60373aa2098a8ffc06160348.jpg

2、 当类名由一个单词组成时,该单词首字母大写;如果类名由多个单词组成,则每个单词的首字母均大写。如:main应改为:Main

祝学习愉快!

  • 皮皮鲁l 提问者 #1

    就算是死循环,他不应该从0开始吗

    2021-02-25 16:44:52
  • 好帮手慕小尤 回复 提问者 皮皮鲁l #2

    同学你好,是的,是从0开始的。控制台并不会展示全部的数据,因程序是死循环,并执行的太快了,在查看数据时,已经是很大的数字了所以同学查看不到0。

    祝学习愉快!

    2021-02-25 17:55:50
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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