Callable — 결과를 반환하고 예외를 던질 수 있는 태스크

Callable — 결과를 반환하고 예외를 던질 수 있는 태스크

Callable<V>결과를 반환하고 예외를 던질 수 있는 태스크를 나타내는 함수형 인터페이스예요. Runnable과 달리 작업 결과를 값으로 돌려받고 싶을 때 사용해요.

출처: Java API Reference

본문

개념 이해하기

Callable은 결과를 반환하고 예외를 던질 수 있는 태스크예요. 구현자는 인자가 없는 단일 메서드 call을 정의해요.

@FunctionalInterface
public interface Callable<V>

CallableRunnable과 비슷해요 — 둘 다 인스턴스가 다른 스레드에 의해 실행될 수 있는 클래스를 위해 설계됐어요. 다만 Runnable은 결과를 반환하지 않고 검사 예외(checked exception)를 던질 수 없어요. 반면 Callable.call()Exception을 선언할 수 있고 V 타입 결과를 반환해요. 타입 매개변수 Vcall 메서드의 결과 타입이에요.

Executors 클래스에는 다른 흔한 형태를 Callable로 변환해주는 유틸리티 메서드가 있어요. Executor 서비스에서 submit()으로 제출하면 Future를 통해 결과를 받을 수 있어요.

메서드

V call() throws Exception

결과를 계산해 반환하거나, 계산할 수 없으면 예외를 던져요.

  • 반환: 계산된 결과
  • Exception — 결과를 계산할 수 없을 때

활용 예

Callable<Integer> task = () -> {
    // 계산 수행
    return 42;
};
ExecutorService pool = Executors.newFixedThreadPool(2);
Future<Integer> future = pool.submit(task);
int result = future.get();   // 결과를 받아옴

더 알아보기 (Learn more)