의문점 공부하기/📌 Java
📌 runnable과 callable의 차이는 무엇일까??
아리빠
2023. 7. 20. 18:04
Runnable:
- Runnable은 Java 1.0에서 도입된 함수형 인터페이스
- 동시에 실행될 수 있는 작업을 나타내지만 결과를 반환하지 않는다
- Runnable의 run() 메서드는 인자를 받지 않고 void를 반환한다
- run() 메서드 내에서 발생한 예외는 run() 메서드 외부에서 잡거나 처리할 수 없다
Runnable runnable = () -> {
// 작업 수행
System.out.println("Runnable 작업 실행");
};
Thread thread = new Thread(runnable);
thread.start();
Callable:
- Callable은 java.util.concurrent 패키지의 일부로 Java 1.5에서 도입된 함수형 인터페이스
- 동시에 실행될 수 있는 작업을 나타내며 결과를 반환한다
- Callable의 call() 메서드는 특정 타입의 결과를 반환하고, 체크된 예외를 던질 수 있다
- call() 메서드 내에서 발생한 예외는 외부에서 잡고 처리할 수 있다
Callable<String> callable = () -> {
// 작업 수행
return "Callable 작업 실행";
};
ExecutorService executorService = Executors.newSingleThreadExecutor();
Future<String> future = executorService.submit(callable);
try {
String result = future.get();
System.out.println(result);
} catch (InterruptedException | ExecutionException e) {
// 예외 처리
} finally {
executorService.shutdown();
}
▼
- Runnable은 결과를 반환하지 않고 외부에서 잡고 처리할 수 있는 체크된 예외를 던질 수 없다
- Callable은 결과를 반환하고 외부에서 잡고 처리할 수 있는 체크된 예외를 던질 수 있다