You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
책에서 Future에서 어떤점을 개선한점이 CompleteFuture인지 나오지만 정확히 어떻게 다른지 알아보고 싶어서 선정하였다.
자신이 생각한 답변은 무엇인가?
먼저 동기, 비동기 그리고 blocking, non-blocking에 대해서 먼저 알아보자
동기 VS 비동기
동기, 비동기는 작업을 순차적으로 수행할지 말지에 대한 관점 차이이다.
- 동기는 작업 B가 완료되어야 다음 작업을 수행하고, 비동기는 작업 B의 완료 여부를 따지지 않고 바로 다음 작업을 수행한다
블락킹 VS 논블락킹
전체적인 작업의 흐름 자체를 막냐 안막냐의 관점 차이.
즉, 자바스크립트의 비동기는 비동기 + 논블락킹이다.
Blocking vs Non-Blocking
Future는 get() 메서드를 통해 비동기 연산의 결과를 얻습니다. 하지만 이 메서드는 연산이 완료될 때까지 현재 스레드를 차단(blocking)합니다. 즉, 비동기 처리 결과를 기다리는 동안 현재 스레드는 대기 상태에 머무르게 됩니다.
반면에, CompletableFuture는 연산이 완료되면 자동으로 콜백 함수를 통해 결과를 반환합니다. 이를 통해 비동기 처리가 완료되기를 기다리는 동안에도 다른 작업을 계속 진행할 수 있습니다. 이는 Non-Blocking 방식의 비동기 처리를 가능하게 합니다.
단일 연산 vs 연산의 조합
Future는 단일 연산의 결과만을 표현하는 데 사용됩니다.
반면에, CompletableFuture는 thenCompose(), thenCombine() 등의 메서드를 통해 여러 비동기 연산을 조합하고 그 결과를 표현할 수 있습니다. 이를 통해 더욱 복잡한 비동기 로직을 구현할 수 있습니다.
결론적으로, 복잡한 비동기 로직을 구현하거나, 비동기 처리 도중에 다른 작업을 진행해야 하는 경우에는 CompletableFuture를 사용하는 것이 더 유용합니다.
비동기 작업
supplyAsync()
Supplier 함수형 인터페이스를 인자로 받고 CompletableFuture<?>를 반환
이때 CompleteableFuture 객체는 비동기 작업의 결과를 나타내며 작업의 상태 정보를 담고 있다.
runAsync()
Runnable 인터페이스를 인자로 받아, CompletableFuture를 반환
The text was updated successfully, but these errors were encountered:
문제가 무엇인가?
Future 와 CompleteFuture 차이점이 무엇인가?
왜 이런 문제를 선정하였는가?
책에서 Future에서 어떤점을 개선한점이 CompleteFuture인지 나오지만 정확히 어떻게 다른지 알아보고 싶어서 선정하였다.
자신이 생각한 답변은 무엇인가?
먼저 동기, 비동기 그리고 blocking, non-blocking에 대해서 먼저 알아보자
동기 VS 비동기
동기, 비동기는 작업을 순차적으로 수행할지 말지에 대한 관점 차이이다. - 동기는 작업 B가 완료되어야 다음 작업을 수행하고, 비동기는 작업 B의 완료 여부를 따지지 않고 바로 다음 작업을 수행한다블락킹 VS 논블락킹
전체적인 작업의 흐름 자체를 막냐 안막냐의 관점 차이.Blocking vs Non-Blocking
Future는 get() 메서드를 통해 비동기 연산의 결과를 얻습니다. 하지만 이 메서드는 연산이 완료될 때까지 현재 스레드를 차단(blocking)합니다. 즉, 비동기 처리 결과를 기다리는 동안 현재 스레드는 대기 상태에 머무르게 됩니다.
반면에, CompletableFuture는 연산이 완료되면 자동으로 콜백 함수를 통해 결과를 반환합니다. 이를 통해 비동기 처리가 완료되기를 기다리는 동안에도 다른 작업을 계속 진행할 수 있습니다. 이는 Non-Blocking 방식의 비동기 처리를 가능하게 합니다.
단일 연산 vs 연산의 조합
Future는 단일 연산의 결과만을 표현하는 데 사용됩니다.
반면에, CompletableFuture는 thenCompose(), thenCombine() 등의 메서드를 통해 여러 비동기 연산을 조합하고 그 결과를 표현할 수 있습니다. 이를 통해 더욱 복잡한 비동기 로직을 구현할 수 있습니다.
결론적으로, 복잡한 비동기 로직을 구현하거나, 비동기 처리 도중에 다른 작업을 진행해야 하는 경우에는 CompletableFuture를 사용하는 것이 더 유용합니다.
비동기 작업
supplyAsync()
Supplier 함수형 인터페이스를 인자로 받고 CompletableFuture<?>를 반환
runAsync()
Runnable 인터페이스를 인자로 받아, CompletableFuture를 반환
The text was updated successfully, but these errors were encountered: