
작업 완료 통보는 블로킹 방식과 콜백 방식으로 나뉩니다. 우선, 블로킹 방식에 대해서 먼저 살펴보도록 하겠습니다.
ExecutorService의 submit( ) 메서드는 매개값으로 준 Runnable 또는 Callable 작업을 스레드풀의 작업 큐에 저장하고 즉시 Future 객체를 리턴하게 됩니다.
리턴 타입 | 메서드명(파라미터) | 설명 |
Future<?> | submit(Runnable task) | - Runnable 또는 Callable을 작업 큐에 저장 - 리턴된 Future를 통해 작업 처리 결과를 얻음 |
Future<V> | submit(Runnable task, V resutl) | |
Future<V> | submit(Callable<V> task) |
여기서 Future 객체는 작업 결과가 아니라, 작업이 완료될 때까지 기다렸다가(=지연, 즉 블로킹되었다가) 최종 결과를 얻는데 사용됩니다. 그래서 Future를 지연 완료(pending completion) 객체라고 칭합니다.
Future의 get( ) 메서드를 호출하면 스레드가 작업을 완료할 때까지 블로킹되었다가 작업을 완료하면 처리 결과를 리턴하게 됩니다. 이것이 블로킹을 사용하는 작업 완료 통보 방식입니다.
'Programming > JAVA' 카테고리의 다른 글
멀티 스레드(9) - 스레드 풀 3 : 작업 생성과 처리 요청 2 (0) | 2025.01.13 |
---|---|
멀티 스레드(9) - 스레드 풀 3 : 작업 생성과 처리 요청 1 (0) | 2025.01.12 |
멀티 스레드(9) - 스레드 풀 2 : 스레드 풀 생성 및 종료 3 (0) | 2025.01.10 |
멀티 스레드(9) - 스레드 풀 2 : 스레드 풀 생성 및 종료 2 (0) | 2025.01.08 |
멀티 스레드(9) - 스레드 풀 2 : 스레드 풀 생성 및 종료 1 (2) | 2025.01.07 |