【发布时间】:2015-10-22 10:25:49
【问题描述】:
这是让我困惑的代码:
public Integer getInteger(BlockingQueue<Integer> queue) {
boolean interrupted = false;
try {
while (true) {
try {
return queue.take();
} catch (InterruptedException e) {
interrupted = true;
// fall through and retry
}
}
} finally {
if (interrupted)
Thread.currentThread().interrupt();
}
}
似乎 try 块不会因为 While(true) 块而停止,但有人告诉我 finally 块将始终在 try 块结束后执行。那么finally块什么时候执行呢?
【问题讨论】:
-
如果
try块中确实存在无限循环,我认为你不会到达finally块。