在 Java 中實作延遲
在 Java 中,有多種方法可以在程式中引入延遲或暫停。為了解決 while 循環中對此功能的需求(您需要特定的等待時間),讓我們探索可用的選項及其各自的優勢。
1.使用TimeUnit
對於簡單的等待需求,java.util.concurrent.TimeUnit提供了專用的方法。您可以指定所需的時間單位和持續時間,例如 TimeUnit.SECONDS.sleep(1) 暫停一秒鐘。同樣,您可以使用 TimeUnit.MINUTES.sleep(1) 延遲一分鐘。
2。 ScheduledExecutorService 與 ScheduleAtFixedRate/scheduleWithFixedDelay
要獲得更精確和可配置的延遲,請考慮使用 ScheduledExecutorService。 ScheduleAtFixedRate() 方法可讓您以指定的時間間隔執行任務,而不管過去的執行情況如何。另一方面,scheduleWithFixedDelay() 會根據前一個任務的完成時間引入延遲。
例如,要使用 ScheduledExecutorService 每秒執行一個任務,可以使用以下程式碼:
import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; public class DelayExample { public static void main(String[] args) { ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor(); executorService.scheduleAtFixedRate(App::myTask, 0, 1, TimeUnit.SECONDS); } private static void myTask() { System.out.println("Running"); } }
。漂移和靈活性注意事項
雖然TimeUnit.sleep() 看起來很簡單,但它可能會隨著時間的推移而引入漂移,因為實際執行和睡眠持續時間可能會略有不同。此外,它在控制任務的確切時間方面缺乏靈活性。
。推薦用於準確調度的替代方案
為了更準確和受控的延遲,強烈建議使用 ScheduledExecutorService。它允許以固定速率和固定延遲進行精確調度,使其更適合計時精度至關重要的場景。
以上是如何在 Java While 循環中實現精確的延遲和暫停?的詳細內容。更多資訊請關注PHP中文網其他相關文章!