평범한 연구소

[JAVA] 정해진 시간마다 작업 실행 본문

JAVA/알고리즘 공부

[JAVA] 정해진 시간마다 작업 실행

soyeonisgood 2022. 8. 31. 12:24
package ch13.unit4;

import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;

public class Ex02 {

	public static void main(String[] args) {
		MyScheduler t = new MyScheduler();
		t.start();

	}

}

class MyScheduler extends Thread {
	private long num = 0;
	
	public MyScheduler() {
		TimerTask task = new TimerTask() {
			@Override
			public void run() {
				num = 0;
			}
		};
		
		Timer timer = new Timer();
		
		// 바로 실행하여 10초마다 반복
		// timer.schedule(task, new Date(), 10000); // 바로 실행하여 1초마다 반복 실행
		
		// 오늘밤 12시부터 시작하여 하루에 한 번씩 반복
		Calendar cal = Calendar.getInstance();
		cal.add(Calendar.DATE, 1); // 내일 이 시간
		cal.set(Calendar.HOUR_OF_DAY, 0); // 내일 밤 12시. 
		cal.set(Calendar.MINUTE, 0);
		cal.set(Calendar.SECOND, 0);
		cal.set(Calendar.MILLISECOND, 0);
		
		timer.schedule(task, cal.getTime(), 1000*60*60*24);
	}
	
	@Override
	public void run() {
		while(true) {
			try {
				System.out.println("num: " + num++);
				sleep(1000);
			} catch (Exception e) {
			}
		}
	}
	
}