
○ 작업 생성
하나의 작업은 Runnable 또는 Callable 구현 클래스로 표현하게 됩니다. 두 구현 클래스의 차이는 리턴 값 유무의 여부인데, 아래 예시를 살펴보겠습니다.
Runnable 구현 클래스 | Callable 구현 클래스 |
Runnable task = new Runnable( ) { @Override public void run( ) { // 스레드가 처리할 내용 } } |
Callable<T> task = new Callable<T>)( ) { @Override public T call( ) throws Exception { // 스레드가 처리할 내용 return T; } } |
Runnable의 run( ) 메서드는 리턴값이 없고, Callable의 call( ) 메서드는 리턴 값이 있습니다. 여기서 call( )의 리턴 타입은 implements Callable<T> 에서 지정한 T 타입입니다.
스레드풀의 스레드는 작업 큐에서 Runnable 또는 Callable 객체를 가져와 run( )과 call( ) 메서드를 실행합니다.
○ 작업 처리 요청
작업 처리 요청은, ExecutorService의 작업 큐에 Runnable 또는 Callable 객체를 넣는 행위를 의미합니다. ExecutorService는 작업 처리 요청을 위해 당므 두 가지 종류의 메서드를 제공합니다.
리턴 타입 | 메서드 명(파라미터) | 설명 |
void | execute(Runnable command) | - Runnable을 작업 큐에 저장 - 작업 처리 결과를 받지 못함 생성 |
Future<?> Future<V> Future<V> |
submit(Runnable task) submit(Runnable task, V result) submit(Callable<V> task) |
- Runnable 또는 Callable을 작업 큐에 저장 - 리턴된 Future를 통해 작업 처리 결과를 얻을 수 있음 |
자세한 설명은 다음 아티클에서 살펴보겠습니다.
'Programming > JAVA' 카테고리의 다른 글
멀티 스레드(9) - 스레드 풀 4 : 블로킹 방식의 작업 완료 통보 1 (0) | 2025.01.15 |
---|---|
멀티 스레드(9) - 스레드 풀 3 : 작업 생성과 처리 요청 2 (0) | 2025.01.13 |
멀티 스레드(9) - 스레드 풀 2 : 스레드 풀 생성 및 종료 3 (0) | 2025.01.10 |
멀티 스레드(9) - 스레드 풀 2 : 스레드 풀 생성 및 종료 2 (0) | 2025.01.08 |
멀티 스레드(9) - 스레드 풀 2 : 스레드 풀 생성 및 종료 1 (2) | 2025.01.07 |