[JAVA] 자바 - TimerTask 클래스와 Timer 클래스
by mini_min[JAVA]
자바 - TimerTask 클래스와 Timer 클래스
✔️ Timer 클래스
: 백그라운드 스레드다.
: 실행할 태스크를 스케줄하는 Thread 를 위한 기능으로 1회 또는 정기적으로 반복 실행한다.
TimerTask 는 Timer 에 의해 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) {
}
}
}
}
'Java' 카테고리의 다른 글
[JAVA] 자바 - AtomicInteger 사용, BlockingQueue<E> (0) | 2022.09.05 |
---|---|
[JAVA] 자바 - 동기화 / synchronized 블럭 (0) | 2022.09.01 |
[JAVA] 자바 - 데몬 스레드 (Daemon Thread) / 스레드 종료 (0) | 2022.09.01 |
[JAVA] 자바 - 스레드 (Thread) 개념 (0) | 2022.09.01 |
[JAVA] 자바 - DataOutputStream / BufferedReader 버퍼 크기 주기 (0) | 2022.08.30 |
블로그의 정보
개발자 미니민의 개발로그
mini_min