为了账号安全,请及时绑定邮箱和手机立即绑定

大家好,小弟遇到难题了 ,希望得到帮助。问题:flag是如何出发wait()的?老师在视频里讲的没听懂。

大家好,小弟遇到难题了 ,希望得到帮助。问题:flag是如何出发wait()的?老师在视频里讲的没听懂。

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(),然后他又开始接着运行,这边应该是为了保证先生成后读取吧。感觉你问的问题我有点没太理解,要是回答偏了你可以追问。

查看完整回答
反对 回复 2017-07-17
  • 1 回答
  • 0 关注
  • 1324 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信