在Java中,wait()
方法可以与synchronized
关键字和Object.notify()
或Object.notifyAll()
方法一起使用,以实现线程间的通信。当调用wait()
方法时,线程会释放其占有的对象锁并进入等待状态,直到其他线程调用同一对象的notify()
或notifyAll()
方法唤醒它。
要设置wait()
方法的超时时间,可以使用Thread.sleep()
方法。以下是一个示例:
try {
// 1. 获取对象锁
synchronized (lock) {
// 2. 检查条件是否满足
while (!condition) {
// 3. 如果条件不满足,则等待一段时间(单位:毫秒)
lock.wait(timeout);
}
// 4. 条件满足,执行后续操作
}
} catch (InterruptedException e) {
// 处理异常
}
在这个示例中,lock
是用于同步的对象,condition
是等待的条件,timeout
是等待的超时时间(以毫秒为单位)。如果在timeout
毫秒内条件没有满足,线程将继续执行后续操作。注意,当线程被唤醒后,还需要重新获取对象锁才能继续执行。