温馨提示×

java wait()方法如何处理中断

小樊
81
2024-12-06 03:43:59
栏目: 编程语言

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

0