kimmgamjja

[Java] Callable Runnable 본문

공부/Java

[Java] Callable Runnable

인절미댕댕이 2025. 1. 22. 16:14
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