在Java中,wait()
方法用于让当前线程等待,直到其他线程调用同一个对象的notify()
或notifyAll()
方法。当线程在调用wait()
方法时被中断,它会抛出InterruptedException
异常。为了正确处理这个异常,你需要使用try-catch
语句捕获它,并根据需要处理中断。
以下是一个处理wait()
方法中断的示例:
public class WaitInterruptExample {
public static void main(String[] args) {
final Object lock = new Object();
Thread t1 = new Thread(() -> {
synchronized (lock) {
System.out.println("Thread 1: Waiting for a while...");
try {
lock.wait(); // 线程1等待
} catch (InterruptedException e) {
System.out.println("Thread 1: Interrupted!");
// 处理中断,例如恢复中断状态或退出线程
Thread.currentThread().interrupt();
}
System.out.println("Thread 1: Awakened!");
}
});
Thread t2 = new Thread(() -> {
synchronized (lock) {
System.out.println("Thread 2: Notifying Thread 1...");
lock.notify(); // 线程2唤醒线程1
}
});
t1.start();
t2.start();
}
}
在这个示例中,线程1调用lock.wait()
方法进入等待状态。当线程2调用lock.notify()
方法时,线程1被唤醒。如果线程1在等待过程中被中断,它会捕获InterruptedException
异常并处理中断。在这个例子中,我们仅仅是打印出中断信息并恢复中断状态。在实际应用中,你可能需要根据具体需求来处理中断。