5-3编程练习
来源:5-3 自由编程
慕神0457710
2020-08-22 04:41:26
public class WeatherTest {
public static void main(String[] args) {
Weather wea = new Weather();
new Thread(new GenerateWeather(wea)).start();
new Thread(new ReadWeather(wea)).start();
}
}public class Weather {
private int temperatrue;
private int humidity;
private boolean flag = false;
public int getTemperatrue() {
return temperatrue;
}
public void setTemperatrue(int temperatrue) {
this.temperatrue = temperatrue;
}
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();
}
}
setTemperatrue((int)(Math.random()*40));
setHumidity((int)(Math.random()*100));
System.out.println("生成天气数据"+toString());
flag = true;
notifyAll();
}
public synchronized void read () {
if (!flag) {
try {
wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("读取天气数据"+toString());
flag = false;
notifyAll();
}
@Override
public String toString() {
return "[温度:" + temperatrue + ", 湿度:" + humidity+ "]";
}
}public class ReadWeather implements Runnable{
Weather wea;
public ReadWeather(Weather wea) {
this.wea = wea;
}
@Override
public void run() {
for (int i=0;i<100;i++) {
wea.read();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}public class GenerateWeather implements Runnable{
Weather wea;
public GenerateWeather(Weather wea) {
this.wea = wea;
}
@Override
public void run() {
for (int i=0;i<100;i++) {
wea.generate();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}2回答
同学你好,测试代码是正确的,完成的很棒!继续加油!
祝学习愉快~
小乌兹cxy
2022-01-28
{
([] args) {
= Weather();
Thread(GenerateWeather()).start();
Thread(ReadWeather()).start();
}
}{
;
;
= ;
() {
;
}
(temperature) {
.= temperature;
}
() {
;
}
(humidity) {
.= humidity;
}
(){
(){
{
wait();
} (e) {
e.printStackTrace();
}
}
.setTemperature(Random().nextInt());
.setHumidity(Random().nextInt());
..println(+ .toString());
= ;
}
(){
(!){
{
wait();
} (e) {
e.printStackTrace();
}
}
..println(+ .toString());
= ;
notifyAll();
}
(){
+ .getTemperature() + + .getHumidity() + ;
}
}{
;
(weather){
.= weather;
}
(){
(i = ; i < ; i++)
{
.read();
{
.();
} (e) {
e.printStackTrace();
}
i++;
}
}
}{
;
(weather){
.= weather;
}
(){
(i = ; i < ; i++) {
.generate();
{
.();
} (e) {
e.printStackTrace();
}
i++;
}
}
}老师我的代码总是运行出来是一个两个就不往下运行了

相似问题