温馨提示:这篇文章已超过289天没有更新,请注意相关的内容是否还可用!
在Java中,可以使用wait()方法使线程进入等待状态。wait()方法是Object类的方法,可以在任何对象上调用。调用wait()方法将导致线程释放它所持有的对象的锁,并进入等待状态,直到其他线程调用该对象的notify()或notifyAll()方法来唤醒它。
下面是一个示例代码,演示了如何使用wait()方法使线程等待:
public class WaitExample {
public static void main(String[] args) {
final Object lock = new Object();
Thread thread1 = new Thread(() -> {
synchronized (lock) {
try {
System.out.println("Thread 1 is waiting...");
lock.wait();
System.out.println("Thread 1 is resumed.");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
Thread thread2 = new Thread(() -> {
synchronized (lock) {
System.out.println("Thread 2 is notifying...");
lock.notify();
System.out.println("Thread 2 is completed.");
}
});
thread1.start();
thread2.start();
}
}
在上面的示例中,我们创建了两个线程thread1和thread2。thread1首先获取了lock对象的锁,并调用了wait()方法,进入等待状态。然后,thread2获取了lock对象的锁,并调用了notify()方法,唤醒了处于等待状态的thread1。thread1继续执行,并输出相应的信息。
请注意,wait()方法只能在同步代码块或同步方法中调用,因为它要求线程释放对象的锁。在示例代码中,我们使用synchronized关键字来获取lock对象的锁。
使用wait()方法可以实现线程之间的协调和通信。线程可以通过等待和唤醒来实现同步和顺序执行。