java.lang.Thread.interrupt() 的作用是什么?

2024-03-07

你能解释一下什么吗java.lang.Thread.interrupt()何时调用?


Thread.interrupt()设置目标线程的中断状态/标志。然后在该目标线程中运行的代码可以轮询中断状态并适当地处理它。一些阻止的方法,例如Object.wait()可能会立即消耗中断状态并抛出适当的异常(通常InterruptedException)

Java 中的中断不是抢占式的。换句话说,两个线程必须合作才能正确处理中断。如果目标线程不轮询中断状态,则中断实际上会被忽略。

轮询通过以下方式进行Thread.interrupted()返回当前线程的中断状态并清除该中断标志的方法。通常,线程可能会执行一些操作,例如抛出 InterruptedException。

编辑(来自 Thilo 评论):一些 API 方法内置了中断处理。在我的脑海中,这包括。

  • Object.wait(), Thread.sleep(), and Thread.join()
  • Most java.util.concurrent结构
  • Java NIO(但不是 java.io)并且它不使用InterruptedException,而不是使用ClosedByInterruptException.

编辑(来自@托马斯色情 https://stackoverflow.com/users/254279/thomas-pornin的回答完全相同的问题 https://stackoverflow.com/a/2289930/1305344为了完整性)

线程中断是一种轻推线程的温和方法。它用于给线程一个退出的机会cleanly,相对于Thread.stop()这更像是用突击步枪射击线。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java.lang.Thread.interrupt() 的作用是什么? 的相关文章

  • Java - 从配置文件加密/解密用户名和密码

    我们正忙于为客户开发 Java Web 服务 有两种可能的选择 将加密的用户名 密码存储在Web服务客户端上 从配置中读取 文件在客户端 解密并发送 将加密的用户名 密码存储在 Web 服务器上 从配置中读取 Web 服务器上的文件 解密并
  • JBoss AS 5 中的共享库应该放在哪里?

    我是 Jboss 新手 但我有多个 Web 应用程序 每个应用程序都使用 spring hibernate 和其他开源库和 portlet 所以基本上现在每个 war 文件都包含这些 jar 文件 如何将这些 jar 移动到一个公共位置 以
  • Maven 目标的默认阶段?

    据我了解 在 Maven 中 插件目标可以附加到生命周期阶段 如果没有定义 默认阶段是什么 根据我的经验 这取决于插件的目标 例如 组装 单个 http maven apache org plugins maven assembly plu
  • JAX-WS:有状态 WS 在独立进程中失败

    我在 Tomcat 上部署了一个有状态的 Web 服务 它由工厂服务和主要 API 服务组成 并且工作得很好 工厂服务将 W3CEndpointReference 返回到主 API 实例 客户端使用会话 现在 我尝试将相同的服务作为独立应用
  • 动画图像视图

    目前我正在开发一款游戏 这是我的游戏的详细信息 用户应选择正确的图像对象 我希望图像从左到右加速 当他们到达终点时 他们应该再次出现在活动中 这是我正在处理的屏幕截图 我有 5 个图像视图 它们应该会加速 您有此类动画的示例代码吗 非常感谢
  • FFmpeg 不适用于 android 10,直接进入 onFailure(String message) 并显示空消息

    我在我的一个项目中使用 FFmpeg 进行视频压缩 在 Android 10 Google Pixel 3a 上 对于发送执行的任何命令 它会直接进入 onFailure String message 并显示空消息 所以我在我的应用程序 g
  • 更改 JTextPane 的大小

    我是Java新手 刚刚在StackOverflow中找到了这段代码 ResizeTextArea https stackoverflow com questions 9370561 enabling scroll bars when jte
  • 如何在Gradle中支持多种语言(Java和Scala)的多个项目?

    我正在尝试将过时的 Ant 构建转换为 Gradle 该项目包含约50个Java子项目和10个Scala子项目 Java 项目仅包含 Java Scala 项目仅包含 Scala 每个项目都是由 Java 和 Scala 构建的 这大大减慢
  • 中间件 API 的最佳实践是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们正在开发一个中间件 SDK 采用 C 和 Java 语言 供游戏开发人员 动画软件开发人员 阿凡达开
  • MessageDigest MD5 算法未返回我期望的结果

    我脑后的某个东西告诉我 我在这里遗漏了一些明显的东西 我正在将现有的 java 项目与第三方 api 集成 该第三方 api 使用 api 密钥的 md5 哈希进行身份验证 它对我不起作用 在调试过程中我意识到我生成的哈希值与他们提供的示例
  • Java 类:匿名类、嵌套类、私有类

    有人能解释一下Java中匿名类 嵌套类和私有类之间的区别吗 我想知道与每个相关的运行时成本以及每个编译器的方法 这样我就可以掌握哪个最适合用于例如性能 编译器优化的潜力 内存使用以及其他 Java 编码人员的普遍可接受性 我所说的匿名类是指
  • 如何列出所有可用的 LookAndFeel 主题?

    如何列出所有可用的 LookAndFeel 主题 我想在 JComboBox 中显示以供用户选择 这真的很简单 public static UIManager LookAndFeelInfo getInstalledLookAndFeels
  • Hibernate @OneToMany 注释到底是如何工作的?

    我对 Hibernate 还很陌生 我正在通过教程学习它 我在理解到底如何一对多注释作品 所以我有这两个实体类 Student代表一个学生并且Guide代表指导学生的人 因此 每个学生都与一名向导相关联 但一名向导可以跟随多个学生 我想要一
  • 无法仅在控制台中启动 androidstudio

    你好 我的问题是下一个 我下载了Android Studio如果我去 路径 android studio bin 我执行studio sh 我收到以下错误 No JDK found Please validate either STUDIO
  • 如何使用 Hibernate Session.doWork(...) 进行保存点/嵌套事务?

    我正在使用 JavaEE JPA 托管事务与 Oracle DB 和 Hibernate 并且需要实现某种嵌套事务 据我所知 此类事情不受开箱即用的支持 但我应该能够为此目的使用保存点 正如建议的https stackoverflow co
  • 如何将任务添加到 gradle 中的主要“构建”任务

    当我尝试使用以下代码将任务添加到主构建任务时 rootProject tasks getByName build dependsOn mytask 当我跑步时它抱怨gradle w build输出 Where Build file line
  • java中wav文件转换为字节数组

    我的项目是 阿塞拜疆语音的语音识别 我必须编写一个程序来转换wav文件到字节数组 如何将音频文件转换为byte 基本上如第一个答案中的片段所描述 但不是BufferedInputStream use AudioSystem getAudio
  • 如何使用maven创建基于spring的可执行jar?

    我有一个基于 Maven 的 Spring WS 客户端项目 我想将其打包为单个 jar 在eclipse中 一切运行正常 当我尝试将其打包为可执行 jar 时 我收到 ClassNotFound 异常 因为 Spring jar 未包含在
  • 无法在 BlackBerry Playbook 上设置音量

    我在更改黑莓游戏书的音量时遇到问题 首先 我将 Android 应用程序重新打包到 Palybook 应用程序 我需要使用搜索栏更改黑莓剧本的音量 并在搜索监听器中设置音频管理器音量 这是代码 audioManager AudioManag
  • RecyclerView 不调用 onCreateViewHolder 或 onBindView

    没有收到任何错误 所有数据似乎都有效 由于某种原因 没有调用与视图相关的方法 我已确定以下事项 getItemCount 是唯一被调用的适配器方法 并且返回一个正整数值 我知道这将是你们将要查看的区域 构造函数正在被调用 成员变量有效 Pa

随机推荐

  • SSIS 可以支持加载每行具有不同列长度的文件吗?

    目前 我每天收到大约 75 万行的文件 每行开头都有一个 3 个字符的标识符 对于每个标识符 列数可以更改 但特定于标识符 例如 SRH 将始终有 6 列 AAA 将始终有 10 列 依此类推 我希望能够通过 SSIS 将此文件自动生成 S
  • TinyMCE execCommand 返回未定义

    我试图从我之前创建的特定文本区域中删除tinyMCE 但以下命令不断产生 未定义 错误 使用firebug控制台检查 tinyMCE execCommand mceFocus false textarea plainText tinyMCE
  • 最高的 firebase 版本代码也用于编译播放服务库

    我在我的项目中使用某些 firebase 和 play 服务库 将播放服务插件版本更新至 4 0 0 后 由于 firebase 和 play 服务现在对每个库使用不同的版本编码策略 其中任一库中的最高版本代码将被所有其他库替换 这导致无法
  • 为什么 HRESULT 0 表示成功?

    我刚刚在处理 HRESULT 返回值时遇到了一些非常尴尬的事情 似乎成功为 0 失败为 1 这背后的逻辑是什么 我实际上尝试过if hr 并悲惨地失败了 浪费了我生命的一个小时 直到我发现实际的成功 retval 是 0 我想称想到这个的人
  • 没有活跃的源代码控制提供商

    我在 Ubuntu 上安装的 VS Code 编辑器表明它没有活动的源代码控制提供程序 我正在使用 Ubuntu 并且正在运行 git version 表明它是v2 18 0 我的项目中有一个 git 文件夹 我该如何解决这个问题 另外两个
  • 使用对象检测API的默认配置时,图像缩放器的不同尺寸有何影响

    我试图使用 Tensorflow 的对象检测 API 来训练模型 我正在使用更快的 rcnn resnet101 的示例配置 https github com tensorflow models blob master object det
  • 如何在windows下制作Qt mysql驱动?

    我已经在linux中多次构建了qsqlmysql so 我完全熟悉这个过程 但现在在愚蠢的窗口中 无论我做什么 我都无法构建它 我使用的是Qt5 12 1 最新 和Microsoft VS enterprise 2017编译器 我已经下载了
  • 在客户设备上测试 iPhone 应用程序

    我已经为 iphone 创建了一个应用程序 我还有一个苹果开发者计划证书来编译我的应用程序 现在我想将其发送给我的客户进行审核 我怎样才能做到这一点 他需要什么证书吗 谢谢你 是的 您需要前往苹果会员中心 然后前往配置门户 您需要在那里注册
  • 将 FOR XML 转换为 Varchar(max) [重复]

    这个问题在这里已经有答案了 我有一个返回 XML 的查询 我想将其转换为 varchar 我的查询返回 93 643 个 XML 字符 当我尝试将 xml 结果转换为 varchar 时 将结果集复制到文本编辑器时只得到 43 679 个字
  • Laravel 动态配置设置

    我在我的项目中使用一个包 它在里面存储一个设置config packagename 我想在配置文件中动态更改此值 这就是文件结构当前的样子
  • 如何在 MacOS 上安装 Firefox OS SDK?

    我想开始为 Firefox OS 进行开发 但安装时遇到问题 我正在关注 mozilla 的 wiki 但现在我不知道如何继续 我已经下载了 XULRunner 但是我该怎么办 我正在尝试遵循维基 但没有找到解决方案 Link https
  • 在子视图 (UIWebView) 上获取 TouchBegan

    我有一个 UIWebView 它作为子视图添加到 UIview 中 我想检测何时触摸此 UIWebView 但 TouchBegan 不起作用 任何想法 在代码中子类化 UIWebView 然后在类中实现 TouchBegan 将子类化的
  • Visibility.Collapsed 和 Visibility.Hidden 之间的区别

    之间有什么区别Visibility Collapsed and Visibility Hidden in WPF 不同之处在于Visibility Hidden隐藏控件 但保留它在布局中占用的空间 因此它渲染空白而不是控件 Visibilt
  • 判断Java中的网络掩码是否有效

    Java 6 中确定给定地址是否为有效网络掩码的最简单方法是什么 我找到了一个解决方案 它基本上创建了一组有效的IP以用于比较 即 255 255 255 255 255 255 255 254 255 255 255 252 等 有更简单
  • 无会话 CSRF 保护(双重提交 cookie)

    从我的讲座开始owasp org https www owasp org index php Cross Site Request Forgery 28CSRF 29 Prevention Cheat Sheet他们推荐同步器令牌模式 并且
  • Windows 8 将应用程序存储为企业软件

    我正在编写一个 Windows 8 应用商店应用程序 但该应用程序供我公司内部使用 该应用程序需要在 100 多台平板电脑上运行 因此安装过程必须简单 因此 我一直在使用 Windows 8 应用商店模板来创建我的应用程序 但现在我需要在我
  • 在 WPF 中将 DataSet 绑定到 DataGrid

    我知道这个问题之前已经被问过好几次了 但我无法得到这个 我有一个DataSet and a DataGrid 我想做的就是显示内容DataSet in the DataGrid 我写了这段代码 vConn new OleDbConnecti
  • 如何配置Intellij Idea live模板的适用上下文?

    我想为我的自定义文件类型创建一个实时模板组 但是当我选择适用的上下文时 除了我的自定义文件类型之外 还有一个文件类型或语言类型的列表 该列表是预定义的并且不能扩展吗 可用的上下文类型取决于启用的插件 Jetbrains 帮助页面中是这么说的
  • MapViewOfFile 失败,错误代码 6(无效句柄)

    我尝试将文件映射到内存并使用 MapViewOfFile 但它失败并显示错误代码 6 我尝试了几乎所有方法 我还读到大文件是问题所在 但问题也发生在 1kb 文件上 my code HANDLE hFile CreateFile pFile
  • java.lang.Thread.interrupt() 的作用是什么?

    你能解释一下什么吗java lang Thread interrupt 何时调用 Thread interrupt 设置目标线程的中断状态 标志 然后在该目标线程中运行的代码可以轮询中断状态并适当地处理它 一些阻止的方法 例如Object