是的,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
異常,然后重新設置中斷狀態并返回。你可以根據實際需求來處理中斷信號。