Back_end/JAVA
JAVA - 기본 API(Timer/TimerTask)
hyeon1016
2024. 9. 27. 17:59
Timer/TimerTask
원하는 시간대에 코드가 실행되거나 반복되게 하는 클래스
사용방법
class test extends TimerTask {
@override
public void run() {
System.out.println("test실행");
}
}
//메인함수//
Timer t1 = new Timer(true);
TimerTask w1 = new test();
t1.schedule(w1, 1000);
1. TimerTask클래스를 상속 받는 test클래스 생성, 추상메서드 run()을 오버라이딩하고, 실행할 코드를 작성
2. Timer 생성자의 파라미터를 true로 전달하고, 객체 생성(프로그램이 종료되면 Timer객체가 제거됨)
3. 작업 내용이 담긴 test클래스를 다형성을 사용해 TimerTask 타입의 객체로 생성
4. schedule() 메서드를 사용해 test클래스에 오버라이딩된 run() 메서드를 1000밀리초 후에 호출
schedule()
Timer객체의 특정 작업을 예약하는 데 사용하는 메서드다.
지정된 시간이 지난 후에 TimerTask가 실행되도록 설정한다.
Timer timer = new Timer(true);
TimerTask timertesk = new Test();
timer.schedule(timertask, 시간);
무엇을? 언제?
Test클래스에 오버라이딩 되어있는 run()메서드가 호출된다.
Thread.sleep()
메인 스레드 처리가 끝날 때 까지 대기했다가 다음으로 넘어가는 메서드다
t.schedule(w1, 3000);
t.schedule(w2, 1000);
위 코드의 경우 w1이 실행되지 않고, 코드가 종료된다. 이를 방지하기 위해 Thread.sleep() 메서드를 사용한다.
예시
t.schedule(w1, 3000);
t.schedule(w2, 1000);
Thread.sleep(4000);
w1, w2가 모두 실행된 후에 다음으로 넘어간다.