Thread.interrupt重现错误

问题描述 投票:0回答:1

我正在尝试下面的代码,我中断了一个用户线程,当我打印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();

    }

}

java multithreading concurrency java-threads
1个回答
1
投票

[如果您被打断,您将永远无法进行isInterrupted()检查:Thread.sleep()会引发异常,并且它会清除线程的中断状态,如Javadoc中所述。

© www.soinside.com 2019 - 2024. All rights reserved.