gpt4 book ai didi

java - ExecutorService 中的 InterruptedException

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:15:29 27 4
gpt4 key购买 nike

当在由 ExecutorService 管理的任务中捕获 InterruptedException 时,我们是否应该设置中断标志?或者我们应该吞下 InterruptedException

例子:

final ExecutorService service = ...;
final Object object = ...;

service.submit(() -> {
try {
while (!condition) {
object.wait();
}
} catch (final InterruptedException exception) {
Thread.currentThread().interrupt(); // yes or no?
}
});

最佳答案

在提交给 ExecutorService 的任务中,接收中断是取消任务执行的信号。所以,在你的代码示例中,答案是“否”,不要再设置中断。

据我在源代码中所见,重新断言中断状态将被忽略,但它确实浪费了执行程序中的一些工作,因为如果立即引发 InterruptedException工作线程尝试获取另一个任务,然后根据执行程序的状态确定该任务是虚假的并被清除。

及时关闭执行器取决于响应中断而退出的任务;它不依赖于恢复中断状态的任务。

关于java - ExecutorService 中的 InterruptedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36364224/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com