CompletableFuture 학습 테스트 안녕하세요! 이번 포스팅에서는 학습 테스트를 통해 CompletableFuture를 알아보는 시간을 가져보려고 합니다. 모든 코드는 GitHub에 있으니 참고하시면 됩니다. CompletableFuture는 Java에서 대표적으로 비동기 요청을 처리할 때 사용하는 객체인데요. 사용하기에 따라 Async-Blocking, Async-Non-Blocking 하게 사용할 수 있습니다. 제공하는 기능이 꽤 많아서 이 글에서 전부 다루지는 못하지만, 몇 가지 주요 기능을 알고 나면 나머지는 필요에 따라 적용해볼 수 있다고 생각합니다. 동기 / 비동기, Blocking / Non-Blocking 에 대해 감이 잘 안오신다면 이전 포스팅을 참조해 주세요 :) 학습 테스트를..
늘 헷갈리는 비동기 개념 안녕하세요! 이번 포스팅에서는 늘 모두가 제가 헷갈려하는 Sync와 Async, Blocking과 Non-Blocking에 대해 정리해 보려고 합니다. 해당 개념들에 대해 개발자마다 의견도 조금씩 다르고, 이해하는 방식도 다를 수 있는데요. 저도 제가 이해한 방식대로 간단하게 한번 정리해 보겠습니다. 어떤 작업을 요청하는 클라이언트를 A, 작업을 수행해서 결과를 돌려주는 친구를 B라고 전제하고 시작하겠습니다! Sync VS. Async 동기와 비동기는 수행하는 작업의 주체성을 누가 가지고 있는지가 중요합니다. 동기(Sync)는 작업의 주체성을 A가 가지고 있습니다. A가 B에게 작업을 요구하면, A는 B의 행위가 완전히 끝나거나, B가 결과를 돌려줄 때까지 기다렸다가 자신의 남은..