JAVA · 비동기/동시성
ScheduledExecutorService
주기적 작업과 지연 실행을 관리하는 스케줄러입니다.
비동기/동시성중급SchedulerscheduleAtFixedRate주기실행지연실행
핵심 설명
주기적 작업과 지연 실행을 관리하는 스케줄러입니다.
Java code
import java.util.concurrent.*;
import java.time.LocalTime;
public class SchedulerDemo {
public static void main(String[] args) throws Exception {
ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(2);
// 1. 지연 실행 (3초 후 1회)
scheduler.schedule(
() -> System.out.println(LocalTime.now() + " 지연 실행"),
3, TimeUnit.SECONDS);
// 2. 고정 주기 (시작 후 1초마다)
// 이전 실행 시작 시간 기준
ScheduledFuture<?> periodic = scheduler.scheduleAtFixedRate(
() -> System.out.println(LocalTime.now() + " 주기 실행"),
0, 1, TimeUnit.SECONDS);
// 3. 고정 지연 (이전 실행 완료 후 1초 대기)
ScheduledFuture<?> delayed = scheduler.scheduleWithFixedDelay(
() -> {
System.out.println(LocalTime.now() + " 지연 주기");
try { Thread.sleep(500); } catch (InterruptedException e) {}
},
0, 1, TimeUnit.SECONDS);
// 5초 후 중지
Thread.sleep(5000);
periodic.cancel(false);
delayed.cancel(false);
scheduler.shutdown();
scheduler.awaitTermination(10, TimeUnit.SECONDS);
}
}학습 팁
scheduleAtFixedRate는 실행 간격 보장, scheduleWithFixedDelay는 완료 후 대기 시간 보장입니다. 작업 시간이 간격보다 길면 차이가 큽니다.
주의할 점
스케줄 작업에서 예외가 발생하면 해당 태스크가 조용히 중단됩니다. 반드시 try-catch로 감싸고 로깅하세요.
자주 묻는 질문
ScheduledExecutorService란 무엇인가요?
주기적 작업과 지연 실행을 관리하는 스케줄러입니다.
ScheduledExecutorService 학습 시 주의할 점은 무엇인가요?
스케줄 작업에서 예외가 발생하면 해당 태스크가 조용히 중단됩니다. 반드시 try-catch로 감싸고 로깅하세요.
Continue Learning
Java 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.