如果我像这样使用这种方法,是否会中断线程?
while ( !interrupted() && more work to do){ /* main thread execution loop*/ }
第二个问题:这个陈述是什么意思?
interrupt()方法,并不自动意味着该线程应该 终止。它只是抓住线程的注意力(有点像 戳着睡觉的室友叫醒他)
答案 0 :(得分:1)
调用interrupted()
不会“中断”线程中代码的执行。但是,如果运行它的线程被另一个调用interrupt()的线程中断,那么你的条件会导致循环退出,假设循环中没有其他代码调用interrupted()
(这会清除当前Thread的中断)状态)。
您引用的文字通过检查线程的中断状态,或通过调用能够抛出InterruptedException的方法(或ClosedByInterruptException)来解释线程的代码必须对执行。 )。如果Thread的代码不执行任何操作,则在该Thread上调用interrupt()
将不会影响代码执行;它只会设置Thread的中断状态,这只是Thread的布尔属性。代码必须正确响应中断才能使中断生效。