大家好,小弟遇到难题了 ,希望得到帮助。问题: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(); } |
免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。
版权声明:作者保留权利,不代表天盟立场。
|
|
|
|
满足if调后运行到wait()方法该线程就暂停了,直到另一个notifyall(),然后他又开始接着运行,这边应该是为了保证先生成后读取吧。感觉你问的问题我有点没太理解,要是回答偏了你可以追问。 |
|
|
|
|