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