본문 바로가기
개발/Java

[Java] ExecutorService 정리

by 1인용 놀이터 2025. 5. 7.
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