我正在尝试下面的代码,我中断了一个用户线程,当我打印isInterrupted的值时,它返回的是false,我没有一个真值,在这里,当异常发生时,该标志将被重置。被捕获或正在调用中断的方法。
其次,根据我的理解,sleep方法在每次迭代中都应该抛出catched值,并且在每次迭代中都要抛出interruptedException,但是它只会抛出一次。
class ThreadInterruptt extends Thread
{
public void run()
{
for(int i = 0; i<100;i++)
{
try {
Thread.sleep(1000);
System.out.println(i);
System.out.println(isInterrupted());
} catch (InterruptedException e) {
System.out.println("Thread Interrupted");
}
}
}
}
public class ThreadInterrupt {
public static void main(String ag[]) throws InterruptedException
{
ThreadInterruptt t = new ThreadInterruptt();
t.start();
Thread.sleep(100);
t.interrupt();
}
}
[如果您被打断,您将永远无法进行isInterrupted()
检查:Thread.sleep()
会引发异常,并且它会清除线程的中断状态,如Javadoc中所述。