java多线程开发08——中断interrupt
有三个方法和中断有关:
- public void interrupt():线程对象的成员方法,调用此方法,可以向线程内发送中断信号,有一些原生方法可以捕捉中断信号从而抛出被中断异常InterruptException,同时会线程内的中断标志会变成true。
- public static boolean interrupted():Thread的静态方法,调用此方法,可以查看当前线程是否被中断,即查看中断标志,需要说明的是,标志为true时,调用一次会自动把标志变回false
- public boolean isInterrupted():线程对象的成员方法,调用此方法,可以查看该线程的中断标志是否是true,该方法不会擦除true记号。
会被interrupt打断的原生方法
- Object的wait的方法三种重载
- Thread的sleep(long)方法的两种重载
- Thread的join方法的三种重载
- InterruptibleChannel的io操作
- Selector的wakeup方法
这些方法在阻塞的过程中,线程被打断后,会抛出InterruptException异常,并且擦除中断标志为false。