로딩
요청 처리 중입니다...

Spring MVC에서 비동기 작업은 요청 스레드에 어떤 영향을 줄까?

 Spring MVC에서 비동기 작업은 요청 스레드에 어떤 영향을 줄까?

Spring MVC에서 클라이언트 요청은 Tomcat Connector를 통해 들어오고, 실제 Controller, Service, Repository 흐름은 보통 Tomcat Worker Thread에서 실행됩니다. http-nio-8080-exec-* 그렇다면 애플리케이션 코드 안에서 CompletableFuture나 parallelStream 같은 비동기/병렬 처리를 사용하면 요청 스레드는 어떻게 될까요? 비동기 작업을 사용하면 요청 스레드와 작업 스레드가 분리되기 때문에, 요청 스레드가 바로 자유로워질 것처럼 보일 수 있습니다.

하지만 실제로는 그렇지 않을 수 있습니다. 핵심은 다음입니다.

비동기 작업을 시작하는 것과 요청 스레드가 반환되는 것은 다른 문제입니다. 요청 스레드가 비동기 작업의 결과를 기다리는 순간, 그 요청 스레드는 여전히 점유됩니다. 1.

비동기와 병렬은 같은 개념일까? 먼저 비동기와 병렬을 구분할 필요가 있습니다.

두 개념은 자주 함께 등장하지만 같은 의미...