为什么在catch块中调用方法Thread.currentThread.interrupt()

推荐答案

这是对keep state人做的.

当你抓住InterruptedException并吞下它时,你基本上可以防止任何更高级别的方法/线程组注意到中断.这可能会造成问题.

通过调用Thread.currentThread().interrupt(),您可以设置线程的中断标志,这样更高级别的中断处理程序就会注意到它,并可以适当地处理它.

Java Concurrency in Practice discusses this in more detail in Chapter 7.1.3: Responding to Interruption. Its rule is:

只有实现线程中断策略的代码才能接受中断请求.通用任务和库代码不应该吞噬中断请求.

Java相关问答推荐

在Spring Boot中测试时出现SQL语法错误

我们如何直接使用kerminldap服务票证来通过ldap进行身份验证并形成LDAP上下文

Java 22模式匹配不适用于记录模式匹配.给出汇编问题

JsonPath在多个线程中返回错误的值

Java Stream,需要更新列表对象列表

如何调用Firebase Realtime Database中的子图像列表到android studio中的回收器视图?

';com.itextpdf.ext.html.WebColors已弃用

扩展到弹出窗口宽度的JavaFX文本字段

不推荐使用的Environment.getExternalStorageDirectory().getAbsolutePath()返回的值不同于新的getExternalFilesDir(空)?

当返回Mono<;Something>;时,不会调用Mono<;void>;.flatMap

声明带有泛型的函数以用作查找映射中的值

try 将JSON字符串响应从API转换为映射字符串、对象>;时出错

内存和硬盘中的Zip不同,这会导致下载后的Zip损坏

JFree Chart从图表中删除边框

具有多个模式的DateTimeForMatter的LocalDate.parse失败

有没有办法在o(log(N))中以系统的方式将数组中的小块元素复制和移动到新增长的数组中的左侧?

JXBrowser是否支持加载Chrome扩展?

JPA无手术同品种器械可能吗?

如何修复Spring Boot应用程序中的RestDocumentationGenerationException:java.io.FileNotFoundException:/curl-request.adoc(只读文件系统)?

让标签占用JavaFX中HBox的所有可用空间