调用线程的中断()时会发生什么?

AKh*_*AKh 9 java multithreading thread-safety

我需要知道会发生什么

  1. 什么时候睡觉?
  2. 当它正在运行时,即它正在执行给定的任务.

提前致谢.

CWM*_*Man 7

根据您之前的问题判断,我假设您对Java的行为感兴趣.

在Java中,InterruptedException如果线程当前正在阻塞,则会抛出.如果线程没有阻塞,则不会抛出异常.

有关更多信息,请查看此处:
JavaDocs

对于.NET语言,ThreadInterruptedException如果线程当前阻塞,则抛出a语言.如果线程没有阻塞,则在线程阻塞之前不会抛出异常.

请使用您想要答案的语言标记您的问题.


Ada*_*erg 6

中断线程是一种取消它的状态安全方法,但是线程本身必须编码以注意中断.InterruptedException如果在.interrupt()执行该线程时发生了异常,则阻塞抛出的Java操作将抛出该异常.

.interrupt()方法为该线程设置"中断"标志,并中断任何IO或睡眠操作.它没有任何其他功能,所以由您的程序做出适当的响应 - 并Thread.interrupted()定期检查其中断标志.

如果线程没有检查中断,则无法安全地停止.Thread.stop()使用起来不安全.所以你.interrupt()用来停止一个线程,但是在编写多线程代码时,你需要确保.interrupt()做一些合理的事情.这篇TechRepublic文章是一个非常好的教程.