Java 等待变量值变化:使用 wait() 和 notify() 方法
在Java中,可以使用wait()和notify()方法来实现等待一个变量值变化的功能。
首先,需要在一个synchronized块中使用wait()方法来等待变量值的变化。wait()方法会使当前线程进入等待状态,并释放锁。例如:
synchronized (lock) {
while (variable != expectedValue) {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
然后,在其他线程中,当变量值发生变化时,可以使用notify()或notifyAll()方法来通知等待的线程。notify()方法会随机选择一个等待的线程唤醒,而notifyAll()方法会唤醒所有等待的线程。例如:
synchronized (lock) {
variable = newValue;
lock.notifyAll();
}
这样,当变量值发生变化时,等待的线程会被唤醒并继续执行。需要注意的是,在使用wait()和notify()方法时,必须在同步块中使用,并且使用相同的锁对象。
另外,也可以使用Java的Lock和Condition来实现类似的功能。具体的实现方式与使用synchronized和wait()、notify()类似,只是方法的名称和使用方式会有些不同。
原文地址: https://www.cveoy.top/t/topic/pWvo 著作权归作者所有。请勿转载和采集!