微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在设置了“中断状态”的情况下调用Thread.sleep吗?

如何解决在设置了“中断状态”的情况下调用Thread.sleep吗?

| 关于这一点,Java文档尚不清楚。如果在调用Thread.sleep()之前在线程上调用中断会发生什么:
        //interrupt reaches Thread here
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            return;
        }
会抛出InterruptedException吗? 请指向相关文档。     

解决方法

是的,它将引发异常。根据Thread.sleep的javadoc,该方法为:   抛出:   InterruptedException-如果任何线程中断了当前线程。引发此异常时,将清除当前线程的中断状态。 在这种情况下,“具有”是指中断状态的非正式方式。这是非正式的,这很可惜-如果某个地方的规范应该准确无误,那么,到处都是,但是最重要的是线程基元。 中断状态机制通常的工作方式是,如果某个线程在不可中断时(因为正在运行)而接收到中断,则该中断实际上要等到线程被中断为止,此时它突然引发了InterruptedException。这是该机制的一个例子。     ,线程可以在任何时间点中断,但是直到该线程用
Thread.currentThread().isInterrupted()
或到达时专门检查其中断状态,或者已经被调用
Thread.sleep(long)
Object.wait(long)
或其他标准JDK阻塞后,它才有效。抛出
InterruptedException
的方法,例如
java.nio
包中的方法。当您抓到
InterruptedException
或显式调用
Thread.interrupted()
时,线程的中断状态将重置(请参阅该难懂方法的文档)。 此JavaSpecialists文章应进一步说明线程中断如何工作以及如何正确处理它们。     ,您可以使用以下类测试行为。在这种情况下,循环不会中断,线程在进入睡眠状态时会死掉。 公共类TestInterrupt {
public static void main(String[] args) throws InterruptedException {
    Thread t = new Thread(){
        public void run(){
            System.out.println(\"hello\");
            try {
                for (int i = 0 ; i < 1000000; i++){
                    System.out.print(\".\");
                }
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                System.out.println(\"interrupted\");
                e.printStackTrace();  
            }

        }
    };
    t.start();
    Thread.sleep(100);
    System.out.println(\"about to interrupt.\");
    t.interrupt();

}
}     ,InterruptedException的文档似乎暗示它可以在其他时间被中断 http://download.oracle.com/javase/1.4.2/docs/api/java/lang/InterruptedException.html   当某个线程长时间等待,休眠或暂停时抛出该异常,而另一个线程使用Thread类中的interrupt方法将其中断 同样,由于它是一个检查的异常,它只会由声明它的方法抛出。看到 http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Thread.html#interrupt()     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。