是的,Java中的wait()
方法可以被中断。当你调用一个线程的wait()
方法时,该线程会进入等待状态,直到其他线程调用同一个对象的notify()
或notifyAll()
方法唤醒它。如果在此期间,调用wait()
方法的线程被中断,那么它将收到一个InterruptedException
异常。
你可以通过捕获这个异常来判断线程是否被中断,并在适当的时候处理中断信号。例如:
try { synchronized (lock) { while (!condition) { try { lock.wait(); } catch (InterruptedException e) { // 线程被中断,处理中断信号 Thread.currentThread().interrupt(); // 重新设置中断状态 return; // 或者根据你的需求执行其他操作 } } } } catch (InterruptedException e) { // 这里不会被执行,因为wait()方法已经被捕获 }
在这个例子中,当线程被中断时,它会捕获InterruptedException
异常,然后重新设置中断状态并返回。你可以根据实际需求来处理中断信号。