这就是我正在做的:
Stopwatch stopWatchToCheckTimeout;
void checkShutDown() throws InterruptedException {
if (stopWatchToCheckTimeout.elapsed() >= MAX_GRACEFUL_TIMEOUT_DURATION) {
throw new InterruptedException("Time to shut down now!");
}
}
public Void mainFancyMethod() {
try {
while(true) {
checkShutDown();
// do fancy work
}
} catch (InterruptedException ex) {
log.debug("Shutting down gracefully");
}
return null;
}
来自java/lang/InterruptedException文档我不清楚它是否应该是另一个应该中断的线程,或者一个线程是否可以为自己抛出这个异常?
为此用例抛出的最佳异常是什么?
最佳答案
看起来您正在使用异常代替控制流。有什么理由不能让 checkShutDown
返回 boolean 值吗?
boolean timedOut() {
return (stopWatchToCheckTimeout.elapsed() >= MAX_GRACEFUL_TIMEOUT_DURATION)
}
关于java - 线程为自己抛出 InterruptedException 是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57716929/