Java

[Java] 기본 API 클래스⑦ Timer/TimerTask

망고고래 2024. 4. 6. 16:26

what?

특정한 시간에 코드를 실행하거나 작업이 특정 시간 간격으로 반복되게 함

why?

사용하지 않으면 코드는 순차적으로만 실행됨

how?

1)TimerTask를 상속하는 새로운 클래스 선언

2)TimerTask 클래스의 run 추상 메서드 오버라이딩

Class Work1 extendsTimerTask{
    @Override
    public void run(){
        System.out.println("work1 실행");
    }
}

 

3)Timer 객체 생성, 원하는 시간을 파라미터로 작성

Timer t = new Timer(true); //true: 프로그램 종료시 객체 사라짐
TimerTask w1 = new Work1();
t.schedule(w1, 5000); //5초 뒤 실행

 

 

예제

class Work1 extends TimerTask{
    @Override
    public void run(){
        System.out.println("work1 실행");
    }
}

class Work2 extends TimerTask(){
    @Override
    public void run(){
        System.out.println("work2 실행");
    }
}

public class Timer1{
    public static void main(String[] args) throws Exception{
        Timer t = new Timer(true);
        TimerTask w1 = new Work1();
        TimerTask w2 = new Work2();
        
        t.schedule(w1, 3000); //3초 뒤 w1의 run() 실행
        t.schedule(w2, 1000); //1초 뒤 w1의 run() 실행
        Thread.sleep(4000); //종료하지 않고 4초간 대기
        System.out.println("모든 작업 종료");
    }
}