基本的には、クラスのインスタンス変数であるint値xがあります。最初は0に設定されています。私は別のメソッド "getNum"をインクリメントし、xを返します。このgetNum()メソッドは、外部プログラムによって呼び出されます。しかし、毎日(真夜中に、単純化のために)、xを0にリセットしたいと思います。これはどのように行われますか? Date(int、int、int)は推奨されていませんが、メソッドはCalendarではなくDatesしか使用しません。 TimerTaskイベントは発生しません。私がプログラムを一番下に走らせるたびに、数字が常にリセットされるべきではないにもかかわらず、毎回 "0"が印刷されます。基本的に、何も動作しません。何が間違っているのでしょうか? scheduleAtFixedRate(TimerTask, Date, long)
のドキュメント毎のJavaプログラムで一定の時間間隔で何かを起こすには?
import java.util.*;
class Foo {
private static void scheduleTimer() {
Timer timer = new Timer();
long c = 86400000;
timer.scheduleAtFixedRate(new MyTimerTask(),
new Date(2011, 7, 31), c);
}
public static int getNum() { return x++; }
private static int x = 0;
public static void resetNum() { x = 0; }
}
class MyTimerTask() extends TimerTask {
public void run() {
Foo.resetNum();
}
public class Bar { // in a separate file
public static void main (String[] args) {
System.out.println(Foo.getNum());
}
}
私は実際にどこかで発生しているscheduleTimerの呼び出しがあると仮定しますか? –
このスニペットから実際に何が起こっているのかを知ることも非常に難しいです。あなたのJavaアプリケーションが終了する場合、私の理解は、その変数の値が保持されないことです。あなたがそれを期待している場合、main()がそれを呼び出して終了したときに、ここであなたの設計に何か問題があります。 –