5-1天气数据同步程序是否正确

5-1天气数据同步程序是否正确

import java.util.Random;


public class Weather {

private int temperature;//温度

private int humidity;//湿度

boolean flag=false;

//getter和setter方法

public int getTemperatrue() {

return temperature;

}


public void setTemperatrue(int temperatrue) {

this.temperature = temperatrue;

}


public int getHumidity() {

return humidity;

}


public void setHumidity(int humidity) {

this.humidity = humidity;

}

//生成天气数据的方法

public synchronized void generated() {

Random rand = new Random();

if(flag) {

try {

wait();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

setTemperatrue(rand.nextInt(100));

setHumidity(humidity+50);

System.out.println("生成天气数据:温度"+temperature+"湿度"+humidity);

flag=true;//生成天气数据,容器中已经有数据。

notifyAll();

}

//读取天气数据的方法

public synchronized void read() {

if (!flag) {

try {

wait();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

System.out.println("读取温度"+getTemperatrue());

System.out.println("读取湿度"+getHumidity());

flag=false;//读取完毕,容器中没有数据

notifyAll();

}


}

public class GenerateWeather implements Runnable {

private Weather weather;

//构造函数

public GenerateWeather(Weather weather) {

this.weather=weather;

}

@Override

public void run() {

int i=0;

while(i<100) {

try {

Thread.sleep(5000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

weather.generated();

i++;

}

}

public class ReadWeather implements Runnable {

private Weather weather;

public ReadWeather(Weather weather) {

this.weather=weather;

}

@Override

public void run() {

int i=0;

while(i<100) {

try {

Thread.sleep(100);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

weather.read();

i++;

}

}


}

public class Test3 {


public static void main(String[] args) {

// TODO Auto-generated method stub

Weather weather=new Weather();

new Thread(new GenerateWeather(weather)).start();

new Thread(new ReadWeather(weather)).start();

}


}


正在回答

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

1回答

下面的代码,setHumidity方法的值可以改成rand.nextInt(100),温度的值可以适当调小点。

setTemperatrue(rand.nextInt(100));
setHumidity(humidity+50);

其他没有问题,祝学习愉快!

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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