/**
* Pauses this thread for {@code millis} milliseconds.
*
* If interrupted, the thread restarts immediately, and the
* interruption flag remains set.
*/
public static void sleep(long millis) {
try {
Thread.sleep(millis);
} catch (InterruptedException e) {
// Best course of action is to stop sleeping but propagate
// the interruption so the caller gets to deal with it.
Thread.currentThread().interrupt();
}
}
5条答案
按热度按时间wgxvkvu91#
它不会抛出被中断的异常--它可能在运行时抛出。所以你得把它包起来。
您可以创建一个具有try catch的函数并调用它,而不是每次都像这样编写try catch
现在你可以在任何地方使用这个方法
另一种选择是使用Kotlin,而不是每次都尝试捕获睡眠
6ojccjat2#
每当你想多次执行某个任务时,你可以编写一个方法,而不是一遍又一遍地复制/粘贴相同的代码。“睡一会儿”听起来像是一个非常简单的工作,但它真的不是,所以,它变成了一种方法!
1hdlvixo3#
只需要写一个方法或lambda。你可以把它放在你的图书馆里。
或者创建一个lambda。这里使用
LongConsumer
。并按如下方式调用它:
31moq8wy4#
有两种方法:
1)协同程序
尝试使用
coroutines
。这很容易,不会阻塞你的主线程调用函数
声明函数
2)处理器
调用函数
声明函数
dgsult0t5#
根据你为什么要睡觉,可能有比Thread.sleep()更好的替代方法。
如果您在测试中等待一些异步操作完成,我发现像awaitility这样的工具是一个很好的选择,特别是对于测试。
基本上,而不是
你会的
如果时间到了,它会抛出一个异常,但它是一个RuntimeException,所以你不必捕捉它。
我最近写了一篇关于这个主题的文章,如果你有兴趣了解更多:https://link.medium.com/pJGQaQLnjAb