在《Effective Java》(第275页)中,有这段代码:
...
for (int i = 0; i < concurrency; i++) {
executor.execute(new Runnable() {
public void run() {
ready.countDown();
try {
start.await();
action.run();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
} finally {
done.countDown();
}
}
}
...
为什么要捕获中断异常再重新抛出它?不直接让它飞行不行吗?
InterruptedException
是一个受检异常,并不在Runnable.run()
的签名中(而不是Executor.execute
)。 - Tom