Interrupt()
该方法给线程设置中断标记,标记当前线程被中断,可以通过Thread.interrupted()来了解当前线程是否处于中断状态,该方法会自动清除线程的中断标记,Thread.currentThread().isInterrupted()方法不会清除线程的中断标记,通常用该方法在一个线程中查看另外一个线程的中断状态。
通常的做法如下:
while()
{
….//somework to do.
if(Thread.isInterrupted())
{
thrownew InterruptedException();
}
}
另外,线程的处于阻塞状态的某些方法具有自动处理中断标记的能力,即当调用interrupt方法后,这类阻塞状态的方法会自动抛出InterruptedException,并清除中断标记。这类方法有以下几种
-
Object.wait()/sleep() 等
-
java.util.concurrent
的大多数结构体 -
JavaNIO