[英]What happens when you invoke a thread's interrupt()?
我需要知道会发生什么
提前致谢。
中断一个线程是一种状态安全的方式来取消它,但是线程本身必须被编码以注意中断。 如果在该线程执行时发生.interrupt()
,则抛出InterruptedException
长阻塞 Java 操作将抛出该异常。
.interrupt()
方法为该线程设置“中断”标志并中断任何 IO 或睡眠操作。 它不执行任何其他操作,因此由您的程序进行适当响应并定期通过Thread.interrupted()
检查其中断标志。
如果一个线程不检查中断,它就不能安全地停止。 Thread.stop()
使用起来不安全。 所以你使用.interrupt()
来停止一个线程,但是在编写多线程代码时,你需要确保.interrupt()
会做一些明智的事情。 这篇 TechRepublic 文章是一个很好的教程。
从您之前的问题来看,我假设您对 Java 的行为感兴趣。
在 Java 中,如果线程当前正在阻塞,则会抛出InterruptedException
。 如果线程没有阻塞,则不会抛出异常。
有关更多信息,请查看此处:
Java文档
对于 .NET 语言,如果线程当前正在阻塞,则会抛出ThreadInterruptedException
。 如果线程没有阻塞,则在线程阻塞之前不会抛出异常。
请用您想要回答的语言标记您的问题。
另一个值得分享的重要信息是,线程类中有两种方法isInterrupted()和interrupted() 。 后一个是静态方法。 isInterrupted()方法调用不会改变 Thread 类的中断属性的状态,而interrupted()静态方法调用可以将中断布尔值的值设置为 false 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.