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는 단순한 지연뿐 아니라 반복 작업, 백그라운드 처리 등 다양한 상황에서 활용할 수 있는 강력한 도구입니다. 특히 서버나 멀티스레드 환경에서 안정성과 유연성을 동시에 확보할 수 있어요.
댓글 없음:
댓글 쓰기