기본적으로 클래스의 인스턴스 변수 인 int 값 x가 있습니다. 처음에는 0으로 설정됩니다. 나는 "getNum"이라는 다른 메소드를 가지고 x를 증가시키고 리턴한다. 이 getNum() 메서드는 외부 프로그램에 의해 호출됩니다. 그러나 매일 (자정에 단순하게하기 위해) x를 0으로 재설정하고 싶습니다. 어떻게 처리 할 수 있습니까? 내가 지금 가지고있는 문제 : Date (int, int, int)는 더 이상 사용되지 않지만 메서드는 Calendar가 아니라 Dates 만 사용합니다. TimerTask 이벤트는 결코 발생하지 않습니다. 하단에 프로그램을 실행할 때마다 번호가 계속 재설정되지 않아도 매번 "0"이 인쇄됩니다. 기본적으로 아무것도 작동하지 않습니다. 어떤 아이디어가 잘못 될까요? scheduleAtFixedRate(TimerTask, Date, long)
에 대한 문서 당자바 프로그램에서 일정 시간 간격으로 무언가를 만드는 방법은 무엇입니까?
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에 대한 실제 호출이 있다고 가정합니까? –
이 스 니펫에서 실제로 진행되고있는 것이 무엇인지 알려주는 것도 매우 어렵습니다. 귀하의 자바 응용 프로그램이 종료되면 내 이해는 그 변수 값을 유지하지 않습니다. 당신이 그것을 기대하고 있다면, main()이 그것을 호출 한 후 종료 할 때, 당신은 여기서 당신의 디자인에 뭔가 잘못 됐을 것입니다. –