boolean flag = false;
// 生成天气数据的方法
public synchronized void generate() {
if (flag) {
try {
wait();
} catch (InterruptedException e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
}
}
temperature = (int) (Math.random() * 40 + 1);
humidity = (int) (Math.random() * 100 + 1);
flag = true;
notifyAll();
}
// 读取天气数据的方法
public synchronized void read() {
if (!flag) {
try {
wait();
} catch (InterruptedException e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
}
}
temperature = this.getTemperature();
humidity = this.getHumidity();
flag =false;
notifyAll();
}
1 回答
为梦想努力_冬
TA贡献56条经验 获得超14个赞
满足if调后运行到wait()方法该线程就暂停了,直到另一个notifyall(),然后他又开始接着运行,这边应该是为了保证先生成后读取吧。感觉你问的问题我有点没太理解,要是回答偏了你可以追问。
添加回答
举报
0/150
提交
取消