반응형

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는 단순한 지연뿐 아니라 반복 작업, 백그라운드 처리 등 다양한 상황에서 활용할 수 있는 강력한 도구입니다. 특히 서버나 멀티스레드 환경에서 안정성과 유연성을 동시에 확보할 수 있어요.
반응형
'갑을병정이야기' 카테고리의 다른 글
| DevExtreme DxDataGrid 셀에 버튼 추가하기 (1) | 2025.09.12 |
|---|---|
| Oracle 인덱스 정리: 실전 예제와 설계 팁 (0) | 2025.09.10 |
| DevExtreme DxPopover 제대로 활용하기 (4) | 2025.08.05 |
| DevExpress DxDataGrid에서 셀 편집 제어 및 포커스 설정 (3) | 2025.07.27 |
| DevExtreme dxDataGrid에서 셀 병합(Cell Merge) 구현 방법 (7) | 2025.07.11 |