【发布时间】:2011-10-17 03:35:48
【问题描述】:
基本上,我有一个 int 值 x,它是一个类的实例变量。它最初设置为 0。我有另一种方法“getNum”,它递增并返回 x。此 getNum() 方法由外部程序调用。但是,每天(为了简单起见,假设在午夜)我想将 x 重置为 0。这将如何完成?我现在遇到的问题: Date(int, int, int) 已被弃用,但该方法只需要日期,而不是日历; TimerTask 事件永远不会发生;每次我在底部运行程序时,它每次都简单地打印“0”,即使数字不应该不断重置。基本上,没有任何效果。任何想法出了什么问题?
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 的实际调用?
-
从这个 sn-p 中也很难判断到底发生了什么。如果您的 java 应用程序退出,我的理解是该变量值不会持续存在。如果你期望它,当 main() 只调用它然后退出时,你的设计有问题。
标签: java methods time timer instance