Mono 를 공부하다보면
Mono.fromSupplier() / Mono.fromCallable() 이렇게 두가지 static method 를 발견할 수 있다.
둘 다 Functional Interface 로, body 의 구성도 같다.
Supplier -> V get();
Callable -> V call();
둘의 차이는 무엇일까?
가장 큰 차이는 사용하는 환경의 차이 (different usage) 이고, 다음은 예외 반환여부이다.
Callable 은 Runnable 과 같이 thread 의 병렬 프로그래밍에서 등장하며,
Runnable 의 () -> () 과 달리, () -> V 로써, 다른 쓰레드로의 반환값을 기대한다.
즉, Future 와 관련된 값들을 리턴하는 처리에서 활용되어진다.
또한, Callable 은 예외를 반환하기도 한다.
이렇게 하면 기타 쓰레드 에서 발생한 예외를 현 쓰레드로 넘겨 별도의 예외 처리가 가능하며,
Supplier 는 예외를 던지지 못하여 단순한 () -> V 로직을 처리하는 Functional Interface 이다.
Mono 를 공부하다보면 Mono.fromSupplier() / Mono.fromCallable() 이렇게 두가지 static method 를 발견할 수 있다.
둘 다 Functional Interface 로, body 의 구성도 같다. Supplier -> V get();
Callable -> V call();
둘의 차이는 무엇일까?