JAVA

Runnable과 Callable

경딩 2025. 1. 12. 15:37

 

Runnable과 Callable의 차이점은 무엇이고 왜 쓰일까?

둘 다 스레드를 만들 때 사용된다. 즉 스레드를 만들어 실행시킨다는 의미는 비동기적으로 실행시킨다는 의미이다.

 

비동기적으로 실행해야 하는 작업에 대해서 반환값을 받아야 할 때는 Callable 를 쓰고 그 결과를 무시해도 될 때는 Runnable를 사용한다.

 

Thread는 비동기적으로 실행해야 하는 작업이 있을 때 쓰인다.

기존 Runnable 은 반환값이 없고 체크 예외를 던질 수 없다는 불편함이 있었다.

public interface Runnable {
	 void run();
}
  • Runnable  의 run()  은 반환 타입이 void이다. 따라서 값을 반환할 수 없다.
  • 예외가 선업되어 있지 않다.  따라서 해당 인터페이스를 구현하는 모든 메서드는 체크예외를 던질 수 없다.
 package java.util.concurrent;
 public interface Callable<V> {
 	V call() throws Exception;
 }
  • java.util.concurrent 에서 제공되는 기능이다.
  • Callable 의  call() 은 반환 타입이 제네릭 V이다. 따라서 반환값을 반환할 수 있다.
  • throws Exception 예외가 선언되어있다. 따라서 해당 인터페이스를 구현하는 모든 메서드는 체크 예외인 Exception 과 그 하위 예외를 모두 던질 수 있다. 

'JAVA' 카테고리의 다른 글

ReentrantLock  (0) 2025.01.07
Java에서의 지연 초기화,지연 평가 Optional 활용: orElse vs orElseGet  (0) 2025.01.06
고급 동기화 - concurrent.Lock  (1) 2025.01.05
생산자 소비자 문제1  (1) 2024.12.31
메모리 가시성  (0) 2024.12.29