正在回答 回答被采纳积分+1
3回答
holder姐
2020-05-21 11:43:20
/**
不知一下思路是否正确,结果如图
设置了flag通信标识为数字,1是设置数据 2-读取数据,3-猜测数据,
是按设置-读取-猜测-设置-读取-猜测 这样依次获取资源的
然后增加了GuessWeather类,主方法启动了三个线程
new Thread(new GenerateWeather(weather)).start();
new Thread(new ReadWeather(weather)).start();
new Thread(new GuessWeather(weather)).start();
*/
public class Weather {
private int temp;//温度
private int hum;//湿度
private int flag = 1;//生成后才能读取 读取完才能继续下一次生成 1-生成 2-读取 3-猜测
public Weather() {
}
public int getTemp() {
return temp;
}
public void setTemp(int temp) {
this.temp = temp;
}
public int getHum() {
return hum;
}
public void setHum(int hum) {
this.hum = hum;
}
//生成天气
public synchronized void generate() {
if(flag == 1) {
notifyAll();
setTemp((int) (Math.random()*40));
setHum((int) (Math.random()*100));
System.out.println("生成天气数据 [温度=" + temp + ", 湿度=" + hum + "]");
flag = 2;
}else{
try {
wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//读取天气
public synchronized void read() {
if(flag == 2) {
notifyAll();
System.out.println(this.toString());
flag = 3;
}else {
try {
wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//猜测天气
public synchronized void guess() {
if(flag == 3) {
notifyAll();
System.out.println("猜测天气数据 [温度=" + temp + ", 湿度=" + hum + "]");
flag = 1;
}else {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
//读取天气信息
@Override
public String toString() {
return "读取天气数据 [温度=" + temp + ", 湿度=" + hum + "]";
}
}
1.Android 零基础入门
- 参与学习 人
- 提交作业 1789 份
- 解答问题 2907 个
Android大楼Java起,本阶段是Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始入门Android开发。
了解课程


恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星