개발자 미니민의 개발스터디

[JAVA] 자바 - TimerTask 클래스와 Timer 클래스

by mini_min
[JAVA]
자바 - TimerTask 클래스와 Timer 클래스

✔️ Timer 클래스

: 백그라운드 스레드다.

: 실행할 태스크를 스케줄하는 Thread 를 위한 기능으로 1회 또는 정기적으로 반복 실행한다.

TimerTaskTimer 에 의해 1회 또는 반복 실행하도록 태스크 되는 스케줄을 의미한다.

❌ Timer 는 많은 스레드가 대기하는 경우 지연될 수 있다.

public class Ex01 {

	public static void main(String[] args) {
		new MyTimer();

	}

}


// 1초 마다 현재 시간 출력
class MyTimer {
	public MyTimer() {
		
		//TimerTask : 타이머에 의해 1회 또는 반복적으로 실행하도록 테스크되는 스케줄 
		TimerTask task = new TimerTask() {
			
			@Override
			public void run() {
				printDays();
				
			}
		};
		
		Timer timer = new Timer();
		//timer.schedule(task, 2000, 1000); // 1초 후 한 번 실행 / 2초 후 1초마다 무한 반복 실행
		timer.schedule(task, new Date(), 1000); // 바로 실행하여 1초마다 반복 실행
		
		//timer.cancel() : 타이머 멈추기 
		
	}
	
	
	private void printDays() {
		Calendar cal = Calendar.getInstance();
		String s = String.format("%tF %tT", cal, cal);
		
		System.out.println(s);
		
		
	}
	
}
💡 timer.schedule(task, 2000, 1000)
2초 후 1초 마다 무한 반복 실행한다.
timer.schedule(task, new Date(), 1000); // 바로 실행하여 1초마다 반복 실행

 

 

-- Timer : 오늘밤 12시부터 시작하여 하루에 한 번씩 반복

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);
		
		
		// 오늘밤 12시부터 시작하여 하루에 한 번씩 반복
		Calendar cal = Calendar.getInstance();
		cal.add(Calendar.DATE, 1);	// 내일 이시간
		
		cal.set(Calendar.HOUR_OF_DAY, 0); // 오늘 12시 0분 0초 
		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); 	//1초에 한 번씩 실행
			} catch (Exception e) {

			}
		}
	}
}

 

 

 

 

 

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기