在Java中,可以使用wait()
和notify()
方法来精确控制线程的等待和唤醒。
wait()
方法使线程等待:synchronized(object) {
while(condition) {
object.wait();
}
}
在上面的代码中,使用synchronized
关键字锁定一个对象,然后在一个循环中检查条件是否满足,如果条件不满足,则调用wait()
方法使线程等待。
notify()
方法唤醒等待的线程:synchronized(object) {
object.notify();
}
在上面的代码中,同样使用synchronized
关键字锁定一个对象,然后调用notify()
方法来唤醒等待的线程。
需要注意的是,wait()
和notify()
方法必须在synchronized
块中使用,并且对同一个对象进行操作。这样才能确保线程等待和唤醒的正确性。
另外,还可以使用wait(long timeout)
方法设置等待的超时时间,以及使用notifyAll()
方法唤醒所有等待的线程。