Runnable & Callable

2024-05-02

Runnable

@FunctionalInterface
public interface Runnable {
    void run();
}

결과를 반환하지 않는 작업(연산)을 나타내는 인터페이스

병렬 처리(스레드)에 대한 기본 클래스이다.

new Thread에 파라미터로 전달해(일급 객체라서 그럼) 새로운 스레드에서 실행 가능

Runnable runnable = () -> System.out.println("하하 인생!");

Thread thread = new Thread(runnable);
thread.start();

Callable

@FunctionalInterface
public interface Callable<V> {
    V call() throws Exception;
}

결과를 반환하고, 예외가 발생할 수 있는 연산을 하는 함수형 인터페이스

ExecutorService를 사용해 병렬 작업 가능하다.

Callable<String> callable = () -> "인생 ㅋㅋ";

ExecutorService executorService = Executors.newSingleThreadExecutor();
Future<String> future = executorService.submit(callable);
System.out.println(future.get());

executorService.close();