[DEV] J-Jay

ExecutorService 본문

Back-end/MSA

ExecutorService

J-Jay 2024. 3. 4. 21:26
728x90

ExecutorService

1. Thread Pool을 이용하여 비동기적으로 작업을 실행하고, 관리한다.

2. 별도의 Thread를 관리하지 않아도 되므로 코드가 간결하게 유지된다

3. Thread 풀을 이용하여 자원을 효율적으로 관리한다.

 

public interface ExecutorService extends Executor {
    //Runnable 인터페이스를 구현한 작업을 Thread Pool에서 비동기적으로 실행
    void execute(Runnable command);
    
    /*
        Callable 인터페이스를 구현한 작업을 Thread Pool에서 비동기적으로 실행, 
        해당 작업의 결과를 Future<T> 객체로 반환
    */
    <T> Future<T> submit(Callable<T> task);

    /*
    	ExecutorService를 종료 (더이상 Task를 받지 않음)
    	하지 않으면 무한정 대기 함
    */
    void shutdown();
}

 

newSingleThreadExecutor

단일 쓰레드로 구성된 Thread Pool 을 생성하며 한번에 하나의 작업만 실행한다.

 

newFixedThreadPool

고정된 크기의 Thread Pool을 생성한다. 크기는 인자로 주어진 n과 동일하다

 

newCachedTreadPool

사용가능한 쓰레드가 없다면 새로 생성해서 작업을 처리하고, 있다면 재사용을 한다.
일정시간 동안 사용되지 않으면 회수한다.

(요청이 많이 들어올 경우 Thread Pool 개수가 계속해서 늘어나기 떄문에 예상 가능한 작업에 대해서만 사용 권장)

 

newWorkStealingPool

work steal 알고리즘을 사용하는 ForkJoinPool을 생성한다.

 

 

 

'Back-end > MSA' 카테고리의 다른 글

MSA 분해로 인해 생긴 문제 해결 방법  (0) 2024.04.25
MSA 분해로 생긴 문제들  (1) 2024.04.25
Future  (0) 2024.03.04
Blocking vs Non-Blocking  (1) 2024.02.26
동기와 비동기  (0) 2023.05.14