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은 결과를 반환하고 외부에서 잡고 처리할 수 있는 체크된 예외를 던질 수 있다
'의문점 공부하기 > 📌 Java' 카테고리의 다른 글
📌 sleep()과 wait()의 차이는?!?!? (2) | 2023.07.24 |
---|---|
📌 스레드에 여러가지 상태가 있다??? (0) | 2023.07.21 |
📌 스레드 만드는 방법!!!! (0) | 2023.07.19 |
📌 데몬 스레드는 무엇일까?? (0) | 2023.07.18 |
📌 스레드와 프로세스의 차이는 뭘까? (0) | 2023.07.17 |