为什么我这个永远都不会从1开始
public class Weather {
int wd;
int sd;
boolean flag = false;
public synchronized void get(){
if (!flag){
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("读取天气速度:【温度:"+wd+",湿度:"+sd+"】");
flag = false;
notifyAll();
}
public synchronized void set(int wd,int sd){
if (flag){
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
this.sd = sd;
this.wd = wd;
System.out.println("生成取天气速度:【温度:"+wd+",湿度:"+sd+"】");
flag = true;
notifyAll();
}
}
public class GenerateWeather extends Thread{
Weather weather;
public GenerateWeather(Weather weather) {
this.weather = weather;
}
@Override
public void run() {
int wd = 0,sd = 0;
while (true)
weather.set(wd++,sd++);
}
}
public class ReadWeather extends Thread{
Weather weather;
public ReadWeather(Weather weather) {
this.weather = weather;
}
@Override
public void run() {
while (true){
weather.get();
}
}
}
public class main {
public static void main(String[] args) {
Weather weather = new Weather();
GenerateWeather generateWeather = new GenerateWeather(weather);
ReadWeather readWeather = new ReadWeather(weather);
generateWeather.start();
readWeather.start();
}
}
12
收起
正在回答
1回答
同学你好,1、数据是用0开始的,因循环的条件是true,则为死循环,当同学查询数据时,数据已经执行到很大了,所以查看起来数据比较大。同学可修改循环,使其循环100次进行查看。如下所示:
2、 当类名由一个单词组成时,该单词首字母大写;如果类名由多个单词组成,则每个单词的首字母均大写。如:main应改为:Main
祝学习愉快!
java工程师2020版
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星