特定の時間にJavaでメソッドを呼び出すことは可能ですか? たとえば、次のようなコードがあります。
class Test{
public static void main(String args[]) {
// here i want to call foo at : 2012-07-06 13:05:45 for instance
foo();
}
}
これはJavaでどのように行うことができますか?
特定の時間にJavaでメソッドを呼び出すことは可能ですか? たとえば、次のようなコードがあります。
class Test{
public static void main(String args[]) {
// here i want to call foo at : 2012-07-06 13:05:45 for instance
foo();
}
}
これはJavaでどのように行うことができますか?
java.util.Timerクラスを使用して、タイマーを作成し、特定の時間に実行するようにスケジュールできます。
以下に例を示します。
//The task which you want to execute
private static class MyTimeTask extends TimerTask
{
public void run()
{
//write your code here
}
}
public static void main(String[] args) {
//the Date and time at which you want to execute
DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = dateFormatter .parse("2012-07-06 13:05:45");
//Now create the time and schedule it
Timer timer = new Timer();
//Use this if you want to execute it once
timer.schedule(new MyTimeTask(), date);
//Use this if you want to execute it repeatedly
//int period = 10000;//10secs
//timer.schedule(new MyTimeTask(), date, period );
}
「 /の組み合わせのより用途の広い代替品」であるScheduledExecutorServiceを使用できます(の javadocによると):Timer
TimerTask
Timer
long delay = ChronoUnit.MILLIS.between(LocalTime.now(), LocalTime.of(13, 5, 45));
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.schedule(task, delay, TimeUnit.MILLISECONDS);
それは可能であり、 http: //quartz-scheduler.org/などのライブラリを使用します。
Quartz は、最小のスタンドアロン アプリケーションから最大の e コマース システムまで、ほぼすべての Java EE または Java SE アプリケーションと統合したり、一緒に使用したりできる、フル機能のオープン ソース ジョブ スケジューリング サービスです。Quartz を使用して、数万、数百、さらには数万のジョブを実行するための単純または複雑なスケジュールを作成できます。タスクが標準の Java コンポーネントとして定義されているジョブは、プログラムで実行できることは事実上すべて実行できます。
私が知っているように、これにはQuartz-schedulerを使用できます。まだ使っていませんが、多くの人に勧められています。
SE について話している場合、Java 5 以降で利用可能なhttp://docs.oracle.com/javase/1.5.0/docs/api/java/util/Timer.htmlを探しているのは Timer クラスかもしれません。
アプリケーションサーバーのコンテキストで何かを計る必要がある場合は、EJB タイマーhttp://www.javabeat.net/2007/03/ejb-3-0-timer-services-an-overview/を参照することをお勧めします。 EJB 3.0。
または、実際に何をしようとしているのかによって、cron ジョブ (またはその他の OS ベースのタイマー メソッド) を使用する方が適しているかどうかを詳しく説明することもできます。時間。
可能です。Timer
とを使用して、ある時点でメソッドをスケジュールできますTimerTask
。
例えば:
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 10);
calendar.set(Calendar.MINUTE, 30);
calendar.set(Calendar.SECOND, 0);
Date alarmTime = calendar.getTime();
Timer _timer = new Timer();
_timer.schedule(foo, alarmTime);
次のリンクを参照してください。
クラスTimerを使用できます
ドキュメントから:
バックグラウンド スレッドでの将来の実行のためにスレッドがタスクをスケジュールするための機能。タスクは、一度だけ実行するようにスケジュールすることも、一定間隔で繰り返し実行するようにスケジュールすることもできます。
メソッドschedule(TimerTask task, Date time)
はまさにあなたが望むものです。指定されたタスクを指定された時間に実行するようにスケジュールします。
cron
形式でスケジュールが必要な場合は、クォーツが良い解決策になります。(クオーツクロン様予定)
java.util.Timerの簡単なデモ
Timer t=new Timer();
t.schedule(new TimerTask() {
public void run() {
foo();
}
}, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2012-07-06 13:40:20"));