Notice
Recent Posts
Recent Comments
Link
kimmgamjja
[Java] Callable Runnable 본문
728x90
1. Callable
- 자바에서 멀티스레딩을 지원하는 인터페이스 중 하나
- 주로 비동기 작업을 수행하는데 사용된다
- 특정 작업을 수행하고 결과를 반환할 수 있는 기능 제공
- call() 메서드를 통해 작업을 수행하고 결과를 반환
public Callable<Map<String, Object>> test() throws ParseException {
return new Callable<Map<String,Object>>() {
@Override
public Map<String,Object> call() {
...
return resultMap;
}
};
}
2. Runnable
- 자바에서 멀티스레딩을 지원하는 인터페이스 중 하나
- 비동기 작업을 수행하기 위해 사용
- 인자를 받지않고 리턴값이 없는 경우에 활용
- run() 메서드에 인자를 받지 않음, 따라서 외부에서 필요한 데이터를 클래스의 필드를 정의하거나 다른 방법으로 접근해야함
- run() 메서드는 void 타입으로 실행결과를 반환하지 않음
- 단순한 작업실행 ( UI 업데이트, 로그 기록, 간단한 계산) 등 수행, 여러 개의 작업을 동시에 실행해야 할 때, 상태관리 ( 클래스의 필드를 통해 스레드가 작업의 진행상태를 읽거나 쓸 수 있음) 의 경우에 사용
Callable vs Runnable
- Callable은 call() 메서드를 통해 작업 수행 결과 반환, Runnable 은 결과 반환하지 않고 run() 메서드는 void 타입
- Callable 의 call() 메서드는 checked exception을 던질 수 있음, 메서드 내에서 발생할 수 있는 예외를 호출한 쪽에서 처리할 수 있도록 한다. Runnable 은 예외를 던질 수 없음
728x90