interrupt()
- 本线程中断自己是被允许的;其它线程调用本线程的interrupt()方法时,会通过checkAccess()检查权限。这有可能抛出SecurityException异常。
- interrupt() 并不能真正的中断线程,需要被调用的线程自己进行配合才行。
- 如果线程处于被阻塞状态(例如调用sleep, wait, join 等进入阻塞状态),那么线程将立即退出被阻塞状态(中断标记立即被清除为“false”),并抛出一个InterruptedException异常。。
- 如果线程处于非阻塞活动状态,那么会将该线程的中断标志设置为 true。被设置中断标志的线程将继续正常运行,不受影响。
- 如果线程被阻塞在一个Selector选择器中,那么通过interrupt()中断它时;线程的中断标记会被设置为true,并且它会立即从选择操作中返回
- 中断一个“已终止的线程”不会产生任何影响。
interrupted()
测试当前线程是否已中断。此方法将清除线程的中断标志。换句话说,如果要连续调用此方法两次,则第二次调用将返回 false(除非在第一次调用清除其中断标志之后,在第二次调用检查它之前,当前线程再次中断)。
isInterrupted()
测试此线程是否已中断。线程的中断标志不受此方法的影响。