Java Timer 및 TimerTask

JavaBeginner
지금 연습하기

소개

Java Timer 와 TimerTask 는 미래에 작업을 예약하는 데 사용됩니다. TimerTask 는 Runnable 인터페이스를 구현하는 추상 클래스로, Timer 클래스에서 작업을 예약하는 데 도움을 줍니다. TimerTask 클래스를 사용하여 작업을 정의하고 Timer 클래스를 사용하여 예약할 수 있습니다. Timer 는 백그라운드 스레드를 사용하여 작업을 예약합니다.

필요한 패키지 임포트

다음 코드를 사용하여 TimerTimerTask에 필요한 패키지를 임포트합니다.

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

TimerTask 를 사용하여 작업 생성

TimerTask 클래스를 사용하여 실행할 작업을 생성합니다. 수행할 작업을 정의하기 위해 run() 메서드를 재정의합니다. 예를 들어, 다음과 같이 "Hello, World!"를 출력하는 작업을 생성할 수 있습니다.

TimerTask task = new TimerTask() {
    public void run() {
        System.out.println("Hello, World!");
    }
};

Timer 객체 생성

다음 코드를 사용하여 Timer 객체를 생성합니다.

Timer timer = new Timer();

Timer 를 사용하여 작업 예약

Timer 클래스의 schedule() 메서드를 사용하여 작업을 예약합니다. 예를 들어, 1000 밀리초 (1 초) 후에 작업을 실행하려는 경우, 다음 코드를 사용할 수 있습니다.

timer.schedule(task, 1000);

이렇게 하면 1 초의 지연 후에 작업이 실행되도록 예약됩니다.

반복 작업을 예약하기

schedule() 메서드를 사용하여 지연 시간과 주기를 매개변수로 지정하여 작업을 반복적으로 실행하도록 예약할 수도 있습니다. 다음 예제에서는 1 초의 지연 후에 시작하여 2 초마다 "Hello, World!"를 출력하는 작업을 예약합니다.

timer.schedule(task, 1000, 2000);

작업 취소

TimerTask 클래스의 cancel() 메서드를 사용하여 예약된 작업을 취소할 수도 있습니다. 다음 예제에서는 한 번만 실행된 후 취소되도록 작업이 예약됩니다.

TimerTask task = new TimerTask() {
    public void run() {
        System.out.println("Task is being executed...");
        cancel();
    }
};
timer.schedule(task, 1000);

scheduleAtFixedRate() 메서드 사용

이전 실행의 완료 시간과 관계없이 고정된 속도로 실행되도록 작업을 예약하려면 scheduleAtFixedRate() 메서드를 사용할 수 있습니다. 예를 들어, 다음 코드를 사용하여 작업 실행에 걸리는 시간에 관계없이 2 초마다 "Hello, World!"를 출력하도록 작업을 예약할 수 있습니다.

timer.scheduleAtFixedRate(task, 1000, 2000);

ExecutorService 사용

TimerTask 객체를 예약하기 위해 ExecutorService를 사용할 수 있습니다. 여기서는 ScheduledExecutorService를 사용하여 작업을 예약합니다. 예를 들어, 다음 코드를 사용하여 2 초마다 "Hello, World!"를 출력하는 작업을 생성할 수 있습니다.

ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.scheduleAtFixedRate(task, 1000, 2000, TimeUnit.MILLISECONDS);

코드 컴파일 및 실행

마지막으로, 터미널에서 다음 명령을 사용하여 코드를 컴파일하고 실행합니다.

javac TimerTaskDemo.java && java TimerTaskDemo

요약

이 랩에서는 Java Timer 와 TimerTask 를 사용하여 특정 시간 또는 지연 시간에 작업을 예약하고 실행하는 방법을 배웠습니다. 또한 작업을 반복하도록 예약하고, 작업을 취소하고, scheduleAtFixedRate() 메서드를 사용하고, ExecutorService를 사용하여 TimerTask 객체를 예약하는 방법도 배웠습니다.