在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
异常并处理中断。在这个例子中,我们仅仅是打印出中断信息并恢复中断状态。在实际应用中,你可能需要根据具体需求来处理中断。