java中断的方法,在里面使用它时循环会不会中断线程?

时间:2017-05-05 13:53:16

标签: java multithreading

如果我像这样使用这种方法,是否会中断线程?

while ( !interrupted() && more work to do){ /* main thread execution loop*/ }

第二个问题:这个陈述是什么意思?

  

interrupt()方法,并不自动意味着该线程应该   终止。它只是抓住线程的注意力(有点像   戳着睡觉的室友叫醒他)

1 个答案:

答案 0 :(得分:1)

调用interrupted()不会“中断”线程中代码的执行。但是,如果运行它的线程被另一个调用interrupt()的线程中断,那么你的条件会导致循环退出,假设循环中没有其他代码调用interrupted()(这会清除当前Thread的中断)状态)。

您引用的文字通过检查线程的中断状态,或通过调用能够抛出InterruptedException的方法(或ClosedByInterruptException)来解释线程的代码必须执行。 )。如果Thread的代码不执行任何操作,则在该Thread上调用interrupt()将不会影响代码执行;它只会设置Thread的中断状态,这只是Thread的布尔属性。代码必须正确响应中断才能使中断生效。