是的,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
异常,然后重新设置中断状态并返回。你可以根据实际需求来处理中断信号。