강의

멘토링

커뮤니티

Inflearn Community Q&A

nisroeld990142's profile image
nisroeld990142

asked

Spring Core Principles - Basic Edition

Scope and Provider

멀티스레드 환경에서 request scope

Written on

·

491

0

도 똑같이 적용이 가능하나요?

로컬쓰레드로 로거를 구현하면 멀티스레드 구현이 불가능해진다는 단점이있는데, 

request scope방식은 멀티스레드 safe한지 궁금하네요

강의 잘 듣고 있습니다 감사합니다.

springoop

Answer 1

1

yh님의 프로필 이미지
yh
Instructor

안녕하세요. log4j님

request scope방식은 멀티스레드 safe 합니다.

그 이유는 서블릿 컨테이너가 HTTP 요청 마다 별도의 쓰레드를 제공하기 때문인데요.

서블릿 컨테이너의 멀티쓰레드 관련해서 자세한 내용은 다음주 출시될 스프링 MVC 강의에서 설명드릴 예정입니다^^

감사합니다.

log4j님의 프로필 이미지
log4j
Questioner

김영한님 안녕하세요, 

답변을 뒤늦게 확인했습니다 ^^; 

멀티스레드 safe하다는게 부분이 정확하게 이해가 안가서 다시 문의드립니다.

request scope방식은 멀티스레드 safe 합니다.

그 이유는 서블릿 컨테이너가 HTTP 요청 마다 별도의 쓰레드를 제공하기 때문인데요.

이 부분에서 멀티스레드 세이프하다는 건 여러 요청이 동시에 들어왔을 때 safe하다는 말씀이신거죠?

제가 문의드린 것은 서블릿이 스레드풀에서 제공한 스레드가 아니라,

하나의 http server request에 대해 서블릿에서 할당된 스레드에서 로직을 진행하다가  진행하다가 TaskExecutor 같은 별도의 스레드를 생성해서 전개할 때를 말하는 것이였습니다. 

이럴때도 ThreadLocal과 유사하게 logger가  꼬이게 되는게 맞는거죠?

yh님의 프로필 이미지
yh
Instructor

별도의 쓰레드를 생성해서 전개하게 되면 이미 서블릿 컨테이너가 제공하는 HTTP 처리를 위한 쓰레드가 아니기 때문에 이 부분이 보장되지 않습니다.

감사합니다.

nisroeld990142's profile image
nisroeld990142

asked

Ask a question