본문 바로가기

Programming/JAVA

멀티 스레드(9) - 스레드 풀 3 : 작업 생성과 처리 요청 1

 

 

○ 작업 생성

 

하나의 작업은 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를 통해 작업 처리 결과를 얻을 수 있음

 

 

자세한 설명은 다음 아티클에서 살펴보겠습니다.

 

 

nozeroslope님의
글이 좋았다면 응원을 보내주세요!