java代码:使用 Object 中的 wait() 方法让线程等待,使用 Object 中的 notify() 方法唤醒线程
时间: 2024-02-17 10:05:21 浏览: 72
好的,下面是示例代码:
```
public class WaitExample {
public static void main(String[] args) {
Object lock = new Object();
Thread waitingThread = new Thread(new WaitingThread(lock));
Thread notifyingThread = new Thread(new NotifyingThread(lock));
waitingThread.start();
notifyingThread.start();
}
}
class WaitingThread implements Runnable {
private final Object lock;
public WaitingThread(Object lock) {
this.lock = lock;
}
@Override
public void run() {
synchronized(lock) {
System.out.println("WaitingThread is waiting...");
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("WaitingThread is notified!");
}
}
}
class NotifyingThread implements Runnable {
private final Object lock;
public NotifyingThread(Object lock) {
this.lock = lock;
}
@Override
public void run() {
synchronized(lock) {
System.out.println("NotifyingThread is notifying...");
lock.notify();
}
}
}
```
在这个示例中,我们创建了两个线程:`WaitingThread` 和 `NotifyingThread`,它们共享一个锁对象 `lock`。`WaitingThread` 在 `run()` 方法中使用 `lock.wait()` 让线程等待,直到另一个线程调用 `lock.notify()` 方法唤醒它。`NotifyingThread` 的 `run()` 方法中调用了 `lock.notify()` 方法,唤醒了等待中的线程。
需要注意的是,使用 `wait()` 和 `notify()` 方法时,必须在同步块中使用。否则会抛出 `IllegalMonitorStateException` 异常。
阅读全文