当前位置: 首页 > 面试题库 >

Java:Thread.interrupted()和Thread.isInterrupted()在用法上的区别?

沈乐邦
2023-03-14
问题内容

Java问题:据我所知,有两种方法可以检查线程内部和线程是否接收到中断信号,Thread.interrupted()Thread.isInterrupted()它们之间的唯一区别是,前者会重置内部中断标志。

到目前为止,我一直在使用它Thread.isInterrupted(),从未有任何问题。再说一次,我见过的大多数教程都建议使用Thread.interrupted()。有什么具体原因吗?


问题答案:

interrupted()static并检查当前线程。isInterrupted()是一个实例方法,用于检查Thread调用它的对象。

一个常见的错误是在实例上调用静态方法。

Thread myThread = ...;
if (myThread.interrupted()) {} // WRONG! This might not be checking myThread.
if (myThread.isInterrupted()) {} // Right!

另一个区别是,这interrupted()也清除了当前线程的状态。换句话说,如果您连续两次调用它,并且两次调用之间的线程没有中断,那么false即使第一个调用返回了,第二个调用也将返回true

该Javadoc中告诉你,这样重要的事情;
经常使用它们!



 类似资料:
  • 有人能给我解释一下在列表类中使用E或Object的区别吗,以及它们的单一用法和定义。我必须在LinkedList中使用它们来实现方法。

  • 在服务器端,我们使用 若要创建套接字,请执行以下操作。套接字创建后,我们可以创建一个新线程来处理那个套接字的输入/输出流。因此,如果有更多的连接请求进入,我们可以返回到同一端口进行侦听,并创建新的套接字。由于我们已经在一个特定的端口创建了ServerSocket,因此我们当然不能在该端口再次创建另一个ServerSocket。 我很困惑客户端是如何处理端口和套接字的,因为我在比较ServerSoc

  • 例如,如果我同时调度一个包含3个异步调用的列表,那么以下面的方式应用map操作会阻塞吗? 在上面的片段中,每个map操作都要阻塞吗?假设第一个呼叫需要5毫秒才能返回,其他每一个呼叫需要2毫秒才能返回,我们是否要等待3ms+2ms+2m=7ms来执行enitre操作?或者只有3ms,因为一旦第一个调用得到解析,那么2ms的调用就已经解析了。

  • 本文向大家介绍js中!和!!的区别与用法,包括了js中!和!!的区别与用法的使用技巧和注意事项,需要的朋友参考一下 js中!的用法是比较灵活的,它除了做逻辑运算常常会用!做类型判断,可以用!与上对象来求得一个布尔值, 1、!可将变量转换成boolean类型,null、undefined和空字符串取反都为false,其余都为true。 2、!!常常用来做类型判断,在第一步!(变量)之后再做逻辑取反运

  • 本文向大家介绍node.js中module.exports与exports用法上的区别,包括了node.js中module.exports与exports用法上的区别的使用技巧和注意事项,需要的朋友参考一下  Node.js 引入了模块(Module)概念,一个模块可以通过module.exports 或 exports 将函数、变量等导出,以使其它 JavaScript 脚本通过require(

  • Antdesign Pro中提供了很多高级控件,其中ProTable和EditableProTable非常实用,但是他们之间到底区别在哪里呢?怎么选择呢? ProTable是标准的表格,增删改查等各种操作按钮比较标准化,而EditableProTable更重交互性,直接可以在表格内做编辑操作; ProTable有翻页功能,EditableProTable没有,所以EditableProTable适