gpt4 book ai didi

java - 我如何避免使用 Thread.sleep()?

转载 作者:行者123 更新时间:2023-11-29 07:33:47 24 4
gpt4 key购买 nike

我有以下代码片段,旨在检查消息是否已发送到电话号码:

public static boolean checkMessages(long sendTime, String phone) {
boolean gotMessage = false;

while (!gotMessage) {
try {
Thread.sleep(5000);
} catch (InterruptedException ex) {
Thread.currentThread().interrupt();
}
gotMessage = MessageHandler.getResponse(sendTime, phone);
}
return gotMessage;
}

此代码本身通过 CompletableFuture 调用,因此它可以与另一个检查并行运行。如果在一定时间内没有满足任何一项检查,则两者都将过期。

现在,根据我的 IDE 和这个站点,由于多种原因,使用 Thread.sleep() 是不好的,所以我想以某种方式从我的代码中删除它。

有没有办法让这个方法永远只返回 true,就像现在一样?


MessageHandler.getResponse() 是我编写的处理程序,用于检查我是否从特定电话号码收到包含特定(硬编码)文本字符串的短信。它确实会在完成检查之前阻止执行,但我使用的 API 具有非常严格的速率限制。 API 不提供回调——它必须手动调用。

最佳答案

您的整个代码的作用不是很清楚。正如其他人评论的那样,了解 MessageHandler 的作用会增加一些上下文。

Thread.sleep 静态调用将使当前线程至少 hibernate 给定的时间,

subject to the precision and accuracy of system timers and schedulers

(参见 API)

如果您的 MessageHandler.getResponse 调用在返回之前阻塞,那么您可能根本不需要 sleep 。

但是,如果此任务“无休止”地重复,您可能希望改用 ScheduledExecutorService,并根据计划运行它。

底线,Thread.sleep 本身并不是“坏习惯”,但您很少需要实际使用它。

关于java - 我如何避免使用 Thread.sleep()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38572918/

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