我的代碼下面的代碼片段,旨在檢查,如果消息被髮送到一個電話號碼:我將如何避免使用Thread.sleep()?
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?你使用什麼通訊軟件包? – ccleve
@ccleve MessageHandler是我編寫的與我使用的API接口的自定義類,它不在此問題的範圍之內。 –
https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ScheduledExecutorService.html#scheduleAtFixedRate-java.lang.Runnable-long-long-java.util.concurrent。TimeUnit- – assylias