ホームページ >Java >&#&チュートリアル >Java で遅延とスケジューリングを最適に実装するにはどうすればよいですか?

Java で遅延とスケジューリングを最適に実装するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-18 21:57:11413ブラウズ

How to Best Implement Delays and Scheduling in Java?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。