728x90
반응형
ExecutorService 란?
ExecutorService는 Java에서 제공하는 Thread Pool 프레임 워크.
스레드를 직접 생성하거나 관리하지 않고, 정해진 개수의 스레드를 재사용하며 작업을 실행하게 해주는 도구이다.
ExecutorService를 사용하는 이유
직접 Thread를 사용 할 때보다 ExecutorService 사용할 경우 매번 새로운 스레드 생성이 아닌 스레드 재사용으로 성능에 좋고, 작업 큐, 스레드 풀을 자동 관리 할 수있다.
또한 리소스 낭비를 하지 않고 최적화가 가능하며 코드가 간단하고 안전하다.
Executor 종류
1. Executor.newFixedThreadPool(n)
- 고정된 개수(n) 만큼의 스레드로 작업 실행
- 일반적인 백그라운드 작업에 적합하다.
ExecutorService executor = Executors.newFixedThreadPool(4);
2. Executors.newSingleThreadExecutor()
- 스레드 하나만 사용하는 작업 큐
- 순차 실행이 필요한 경우 사용(예 : 순서가 중요한 작업.
ExecutorService executor = Executors.newSingleThreadExecutor();
3. Executors.newCachedThreadPool()
- 요청마다 스레드를 만들어 사용 -> 일정 시간 후 자동 종료 됨.
- 많은 작업을 짧게 처리 할 때 유리하다.(메모리 과용위험)
4. Executors.newScheduledThreadPool(n)
- 지연 실행 또는 반복 실행 가능
- 타이머/알람/예약 작업에 적합하다.
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.schedule(() -> {
Log.d("TAG", "지연된 작업 실행");
}, 2, TimeUnit.SECONDS);
안드로이드에서 사용시 주의할 점
- ExecutorService는 메인 스레드에서 실행하면 안됨
- Room DB, Retrofit enqueue, 파일 IO 등에 백그라운드 작업 용도로만 사용
- 너무 많은 스레드를 만들면 메모리 부족, 성능 저하 등 발생 할 가능성이 있다. -> 적절한 개수로 제한
728x90
반응형
'개발 > Java' 카테고리의 다른 글
| [Java] 싱글톤 패턴 정리. (0) | 2025.03.10 |
|---|---|
| [Java] 람다식(Lambda)이란? (0) | 2025.03.07 |