大家好,小弟遇到难题了 ,希望得到帮助。问题: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();

	}


qq_秦皇岛崔哥_03852186
浏览 1325回答 1
1回答

为梦想努力_冬

满足if调后运行到wait()方法该线程就暂停了,直到另一个notifyall(),然后他又开始接着运行,这边应该是为了保证先生成后读取吧。感觉你问的问题我有点没太理解,要是回答偏了你可以追问。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android
Java