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와 함께 사용할 때