温度、湿度随机赋值
package com.mawnqiang.weather; public class Weather { private int temperature; private int humidity; 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; } boolean flag = false; // 判断生成还是读取 // 生成天气数据的方法 public synchronized void generate() { if (flag) { // 如果已经生成天气数据则等待 try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } this.setTemperature((int)(Math.random()*40)); this.setHumidity((int)(Math.random()*60)); System.out.println("生成天气数据:[温度:" +this.getTemperature()+ ",湿度:" +this.getHumidity()+ "]"); flag = true;// 表示完成生成数据 notifyAll(); // 唤醒所有进程, 避免锁死(相互等待) } // 读取天气数据的方法 public synchronized void read() { if (!flag) {// 没有数据则等待 try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("读取天气数据:[温度:" + this.getTemperature() + ",湿度:" + this.getHumidity() + "]"); flag = false; // 已读取完数据,变回无数据状态 notifyAll(); } } package com.mawnqiang.weather; public class GenerateWeather implements Runnable { Weather weather; public GenerateWeather(Weather weather) { this.weather = weather; } @Override public void run() { // weather.setTemperature((int)(Math.random()*40)); // weather.setHumidity((int)(Math.random()*60)); for(int i = 0; i < 100; i++) { weather.generate(); try { Thread.sleep(5000); // 睡眠5秒 } catch (InterruptedException e) { e.printStackTrace(); } } } }
老师你好,当我将下面赋值语句写进生成天气数据线程run方法,获取到的温度 湿度一直不变。。这是
// weather.setTemperature((int)(Math.random()*40)); // weather.setHumidity((int)(Math.random()*60));
13
收起
正在回答 回答被采纳积分+1
1回答
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星