我的假設是,LockSupport.parkNanos(long)
不會拋出InterruptedException
,但標誌可以線程上設置。調用LockSupport.parkNanos(long)後是否需要檢查線程中斷狀態?
- 這是正確的嗎?
- 如果是這樣,我需要檢查標誌,並拋出
InterruptedException
?
使用範例:
import java.util.concurrent.locks.LockSupport;
public void parkNanosInterruptibly(final long nanos)
throws InterruptedException {
LockSupport.parkNanos(nanos);
// If this thread was interrupted during parkNanos(), we must throw "by contract".
if (Thread.interrupted()) {
throw new InterruptedException();
}
}