在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()方法唤醒所有等待的线程。