callable, runnable

topics 300-백엔드개발 308 JAVA
types 이론
tags

Runnable vs Callable

자바에서 멀티스레드 작업을 수행할 때 사용하는 두 가지 인터페이스

비교표

특징 Runnable Callable
상속 관계 java.lang.Runnable 인터페이스 java.util.concurrent.Callable 인터페이스
반환 값 없음 (void run()) 있음 (제네릭 타입 반환, V call())
예외 처리 불가능 (checked exception 부적합) 가능 (throws Exception 선언 가능)
사용 용도 간단한 스레드 작업 결과를 반환하는 비동기 작업

언제 무엇을 사용할까

Runnable을 사용하는 경우:

  • 작업 결과를 반환할 필요가 없을 때
  • 간단한 백그라운드 작업을 수행할 때

Callable을 사용하는 경우:

  • 작업 결과를 받아야 할 때
  • 예외 처리가 필요한 비동기 작업을 수행할 때
  • ExecutorService와 함께 사용할 때

관련 문서: CompletableFuture,Future,ParallelStream