Today's

길을 나서지 않으면 그 길에서 만날 수 있는 사람을 만날 수 없다

갑을병정이야기

Java에서 ScheduledExecutorService로 비동기 지연 처리하기

Billcorea 2025. 8. 21. 15:56
반응형

대표이미지

Java에서 ScheduledExecutorService로 비동기 지연 처리하기

Java에서 작업을 일정 시간 후 실행하거나 주기적으로 반복하고 싶을 때 ScheduledExecutorService는 매우 유용한 도구입니다. 단순한 Thread.sleep()보다 유연하고, 비동기적으로 동작하며, 반복 작업에도 적합합니다.

🛠️ 언제 사용하면 좋을까?

  • 주기적인 작업 실행 (예: 10초마다 서버 상태 체크)
  • 지연된 작업 실행 (예: 버튼 클릭 후 2초 뒤 알림 표시)
  • 타이머 기능 대체 (예: 게임에서 카운트다운)
  • 백그라운드 유지 작업 (예: 캐시 자동 갱신)
  • 멀티스레드 환경에서 안정적인 스케줄링

✨ 기본 예제 코드

import java.util.concurrent.*;

public class SchedulerExample {
    public static void main(String[] args) {
        ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);

        Runnable task = () -> System.out.println("2초 후 실행됨!");

        scheduler.schedule(task, 2, TimeUnit.SECONDS);

        System.out.println("메인 스레드는 계속 실행 중");
    }
}
  

🔍 주요 메서드

  • schedule(Runnable, delay, TimeUnit): 지정된 시간 후 작업 실행
  • scheduleAtFixedRate(Runnable, initialDelay, period, TimeUnit): 고정 간격으로 반복 실행
  • scheduleWithFixedDelay(Runnable, initialDelay, delay, TimeUnit): 작업 종료 후 일정 지연을 두고 반복 실행
💡 Tip: 작업이 끝난 후에는 반드시 scheduler.shutdown()을 호출하여 스레드 풀을 종료하세요. 그렇지 않으면 리소스 누수가 발생할 수 있습니다.

📌 마무리

ScheduledExecutorService는 단순한 지연뿐 아니라 반복 작업, 백그라운드 처리 등 다양한 상황에서 활용할 수 있는 강력한 도구입니다. 특히 서버나 멀티스레드 환경에서 안정성과 유연성을 동시에 확보할 수 있어요.

반응형