gpt4 book ai didi

java - 什么时候会到达这个 catch block ?

转载 作者:行者123 更新时间:2023-11-29 09:43:53 26 4
gpt4 key购买 nike

出于各种不同的原因,我使用了 Thread.sleep,但我从未理解的一件事是在这个 try/catch block 中何时会发生异常:

try {
Thread.sleep(1000); // sleep for 1 second.
} catch (Exception x) {
fail("Failed due to an exception during Thread.sleep!");
x.printStackTrace();
}

计算机中必须发生什么才能在 Thread.sleep 上实际触发异常?我最好的猜测是,也许系统时钟一生中有一次像心跳一样的“跳动”,但这种情况多久发生一次..

所以本质上,我的问题是:在执行 Thread.sleep 时,#sleep 内部必须发生什么才能引发异常?

最佳答案

如果您在 JavaDoc 中查找 Thread.sleep()你确切地看到会发生什么:

throw :
IllegalArgumentException - 如果 millis 的值为负数
InterruptedException - 如果任何线程中断了当前线程。抛出该异常时清除当前线程的中断状态。

关于如何中断另一个线程的示例可能如下所示:

public class Foo {
public static void main(final String[] args) throws Exception {
Thread sleepThread = new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
System.out.println("Interrupted!");
}
}
});
sleepThread.start();
Thread.sleep(500);
sleepThread.interrupt();
}
}

这将打印

Interrupted!

关于java - 什么时候会到达这个 catch block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20958455/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com