JavaでscheduleAtFixedRateを使用する方法

WBOY
リリース: 2023-06-03 12:37:51
転載
1446 人が閲覧しました

scheduleAtFixedRate(task, ti​​me, period)

task - スケジュールされるタスク time - タスクが最初に実行される時刻 period - タスクを実行する時間間隔 (ミリ秒単位)

関数: time time 以上の場合、タスクは初めて実行され、その後タスクは周期ミリ秒ごとに繰り返し実行されます

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
 
public class MyTimerTask extends TimerTask {
    @Override
    public void run() {
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
        System.out.println("Current Time:"+format.format(calendar.getTime()));//获取当前系统时间
        System.out.println("NO.1");
    }
    public static void main(String[] args) {
        MyTimerTask task = new MyTimerTask();
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
        System.out.println(format.format(calendar.getTime()));
        calendar.add(Calendar.SECOND,3);//获取距离当前时间3秒后的时间
        Timer timer = new Timer();
        timer.scheduleAtFixedRate(task,calendar.getTime(),2000);
    }
}
ログイン後にコピー

scheduleAtFixedRate(task, late,period)

task-実行されるタスク late-タスクの実行の遅延時間、単位はミリ秒 period -タスクを実行する時間間隔

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
 
public class MyTimerTask extends TimerTask {
    @Override
    public void run() {
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
        System.out.println("Current Time:"+format.format(calendar.getTime()));//获取当前系统时间
        System.out.println("NO.1");
    }
    public static void main(String[] args) {
        MyTimerTask task = new MyTimerTask();
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
        System.out.println(format.format(calendar.getTime()));
        calendar.add(Calendar.SECOND,3);//获取距离当前时间3秒后的时间
        Timer timer = new Timer();
        //timer.scheduleAtFixedRate(task,calendar.getTime(),2000);
        timer.scheduleAtFixedRate(task,1000,2000);
    }
}
ログイン後にコピー

scheduleAtFixedRateとscheduleWithFixedDelayの違い

1 )scheduleAtFixedRate: 最初の初期化実行時間とサイクル タイムをカスタマイズするために runnable を渡すことができます、単位時間-----定期的なタスクを作成して実行します。指定された初期遅延時間の経過後 (1 分ごとに 1 回またはその他の回数実行) 、初めて実行されます。実行中に例外が発生し、タスクが停止しました。

2)scheduleWithFixedDelay: 前のものと同様です-----定期的なタスク、最初の実行および異常事態を作成して実行します

A: 1 秒で 1 つのタスクを実行します。各タスクは 500 ミリ秒です==== 2 つのタイプに違いはありません

B: タスクの実行時間が長すぎます。たとえば、間隔が 1 秒、実行時間が 3 秒です== ==この場合、主にサイクルに違いがあります。 時間の違い

scheduleWithFixedDelay この方法では、タスクの実行時間がサイクルタイムを超えた場合、次のタスクはそれに基づいて実行遅延を計算します。タスク実行の終了時刻 (例: 間隔時間が 1 秒、実行時間が 3 秒の場合。実行は 10:03 にトリガーされます。理論的には、新しいタスクは 10:04 に実行されるはずです。ただし、このメソッドで実行すると、実行は 10:06 に終了します。10:06 を基準として、新しいタスクは 1 秒の遅延で実行されます。タスク)

scheduleAtFixedRate メソッド (例:間隔は 1 秒、実行時間は 3 秒、実行は 10:03 にトリガーされ、実行は 10:06 に終了し、タスクは 10:04 と 10:05 に蓄積されます。これに基づいて遅延時間を増やすのではなく、すぐに実行されます。 10:06)

以上がJavaでscheduleAtFixedRateを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!