Gee*_*eek 0 java java.util.concurrent
请考虑以下来自java.util.concurrent.locks.AbstractQueuedSynchronizer的代码,作为标题中提出的想法的众多示例之一:
1258 public final boolean tryAcquireSharedNanos(int arg, long nanosTimeout) throws Interrupted Exception {
1259 if (Thread.interrupted())
1260 throw new InterruptedException();
1261 return tryAcquireShared(arg) >= 0 ||
1262 doAcquireSharedNanos(arg, nanosTimeout);
1263 }
Run Code Online (Sandbox Code Playgroud)
为什么大多数阻塞库方法通过调用静态方法Thread.interrupted()而不是实例方法来响应中断isInterrupted().调用静态方法也会清除中断状态,因此即使任务处理代码吞下InterruptionException,调用者也无法知道除了中断状态之外的其他状态.
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |