写出来好像没什么问题,可是感觉做起来思路很乱
package com.imooc.weather;
import java.util.Random;
public class Weather {
private int temperature;
private int humidity;
boolean flag = false;
public Weather() {
}
public int getTemperature() {
return temperature;
}
public void setTemperature(int temperature) {
this.temperature = temperature;
}
public int getHumidity() {
return humidity;
}
public void setHumidity(int humidity) {
this.humidity = humidity;
}
public synchronized void generate() {
if (flag) {
try {
wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Random r = new Random();
int a = r.nextInt(41);
int b = r.nextInt(101);
this.temperature = a;
this.humidity = b;
System.out.println("生成" + this);
flag = true;
notifyAll();
}
public synchronized void read() {
if (!flag) {
try {
wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("读取" + this);
flag = false;
notifyAll();
}
public String toString() {
return "天气数据[温度:" + this.temperature + ",湿度:" + this.humidity + "]";
}
}
package com.imooc.weather;
public class GenerateWeather implements Runnable {
Weather weather;
public GenerateWeather(Weather weather) {
this.weather = weather;
}
@Override
public void run() {
for (int i = 1; i <= 100; i++) {
weather.generate();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
package com.imooc.weather;
public class ReadWeather implements Runnable {
Weather weather;
public ReadWeather(Weather weather) {
this.weather = weather;
}
@Override
public void run() {
for (int i = 1; i <= 100; i++) {
weather.read();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
package com.imooc.weather;
public class TestWeather {
public static void main(String[] args) {
// TODO Auto-generated method stub
Weather w = new Weather();
GenerateWeather g = new GenerateWeather(w);
ReadWeather r = new ReadWeather(w);
Thread a = new Thread(g);
Thread b = new Thread(r);
a.start();
b.start();
}
}
正在回答 回答被采纳积分+1
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星