Java での遅延の作成
Java では、さまざまな方法で遅延を導入できます。ループ内で固定間隔の遅延を目指す場合、java.util.concurrent.TimeUnit は sleep メソッドを提供します。指定した秒数だけ一時停止するには、TimeUnit.SECONDS.sleep(1); を使用します。ただし、このアプローチには、サイクルごとに意図した遅延からの逸脱を引き起こすドリフトと呼ばれる潜在的な問題が生じます。
柔軟な制御とタスクのスケジューリングには、より適切なソリューションとして ScheduledExecutorService が登場します。メソッドscheduleAtFixedRateおよびscheduleWithFixedDelayを使用すると、指定された遅延間隔に基づいてタスクを正確に実行できます。
Java 8では、scheduleAtFixedRateを使用してmyTaskを毎秒実行します:
public static void main(String[] args) { final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor(); executorService.scheduleAtFixedRate(App::myTask, 0, 1, TimeUnit.SECONDS); } private static void myTask() { System.out.println("Running"); }
Java 7との互換性の場合:
public static void main(String[] args) { final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor(); executorService.scheduleAtFixedRate(new Runnable() { @Override public void run() { myTask(); } }, 0, 1, TimeUnit.SECONDS); } private static void myTask() { System.out.println("Running"); }
以上がJava で遅延とスケジューリングを最適に実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。