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();
}
}
正在回答
下面的代码,setHumidity方法的值可以改成rand.nextInt(100),温度的值可以适当调小点。
setTemperatrue(rand.nextInt(100)); setHumidity(humidity+50);
其他没有问题,祝学习愉快!
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星