JVM 동시성 모델 이해하기 (8) – 총정리 — 언제 무엇을 선택할 것인가
JVM 동시성 8부작 시리즈의 마지막. Virtual Thread, Reactor, Coroutines 중 무엇을 선택할지 네 가지 질문으로 정리하고, 기술별 고유 강점과 흔한 오해를 짚는다.
Tech › JVM
8개의 글
JVM 동시성 8부작 시리즈의 마지막. Virtual Thread, Reactor, Coroutines 중 무엇을 선택할지 네 가지 질문으로 정리하고, 기술별 고유 강점과 흔한 오해를 짚는다.
Virtual Thread의 Mount/Unmount 동작 원리, 코루틴 Continuation과의 차이, AOP 프록시가 문제없는 이유, 그리고 synchronized pinning 함정과 실무 대응까지.
Spring이 suspend fun을 mono {}로 감싸 Reactor 파이프라인에 태우는 방식과, AOP 프록시가 COROUTINE_SUSPENDED를 메서드 종료로 오인하는 구조적 한계 — @Transactional + 코루틴이 안 되는 이유까지.
Kotlin Coroutines로 Reactor의 깊은 flatMap 체이닝을 순차적 동기 코드처럼 작성하기. suspend, CPS 변환, 상태 머신, Flow, Channel, 구조화된 동시성까지.
Spring MVC의 1요청-1스레드 한계에서 출발해 Netty 이벤트 루프 구조, MVC vs WebFlux 요청 처리 비교, 이벤트 루프에서 하면 안 되는 것까지 — WebFlux의 동작 원리를 파헤친다.
Pull vs Push 모델부터 Reactive Streams 4개 인터페이스, Reactor의 Mono/Flux와 핵심 연산자, backpressure까지 — 리액티브 프로그래밍의 뼈대를 잡는다.
Thread와 Runnable에서 Callable/Future, ExecutorService, CompletableFuture까지 — Java 동시성 API가 "스레드를 직접 관리하지 마라"는 방향으로 발전해온 과정을 따라간다.
Process와 Thread의 차이, 동시성 vs 병렬성, 그리고 동기/비동기·블로킹/논블로킹이 서로 독립적인 두 축이라는 것까지 — JVM 동시성 시리즈의 기초 체력 편.