在java Thread中,关于中断有三个方法,经常搞混,现在简单分析:
interrupted
类方法 ,常用于线程内部检测当前线程是否 中断,并且清除中断标志,也就是说 如下代码,打印的是false。
if(Thread.interrupted()){ System.out.println(Thread.interrupted()); }
isinterrupted
实例方法,用于在线程外线程 间调用,检测其它线程是否处于中断。
interrupt
实例 方法,一般用于线程间调用 t.interrupt,也可以在本线程调用 ,如下。
Thread.currentThread().interrupt();
而在使用过程中,有些方法会自动抛出 中断异常,如sleep,await 等,而对于 方法内部自己抛出的异常,需要主动的catch或者继续抛出该异常。