如何解决捕获“ InterruptedException”后,为什么“ Thread.currentThreadisInterrupted”的值为false?
在Javadoc中Thread.sleep
(由调用TimeUnit.sleep
):
InterruptedException-如果任何线程中断了当前线程。引发此异常时,将清除当前线程的中断状态。
我认为的目的isInterrupted()
是让您 在 调用可能引发的事件 之前
检测线程是否已中断InterruptedException
。如果您 抓到了 InterruptedException
,可以公平地假设线程 已
被中断…
解决方法
作为标题。
public static void main(String[] args) throws InterruptedException {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println(Thread.currentThread().isInterrupted()); //print false,who reset the interrupt?
}
}
});
thread.start();
TimeUnit.SECONDS.sleep(1);
thread.interrupt();
}
捕获“ InterruptedException”后,为什么“
Thread.currentThread()。isInterrupted()”的值为false?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。