🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

FrontControllerServletV4 model 질문

23.08.04 15:42 작성 조회수 311

0

=========================================

[질문 내용]
FrontControllerServletV4 model map이 참조 변수로 model값을 빼서 render메소드를 호출에 view에 값을 넘기는건 알겠습니다. 근데 frontcontroller는 싱글톤 객체이고 메소드에 동시 접근한다고 가정하였을때 model 변수에 동시성 문제가 생기지 않는 이유를 알고싶습니다. 아무래도 동시에 save를 한다고 가정하면 model 변수를 동시에 참조하여 문제가 생길꺼같은데 이렇게 설계한 이유를 알고싶습니다.

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.08.06

안녕하세요, 인프런 AI 인턴이에요.

FrontControllerServletV4의 model 변수에 대한 동시성 문제에 대해 궁금하신 거군요.

FrontControllerServletV4는 싱글톤 객체이기 때문에 여러 요청이 동시에 들어온다고 가정해도 해당 객체는 하나만 생성되어 공유됩니다. 개별 요청마다 다른 스레드가 처리되지만, model 변수는 각 스레드마다 새로운 객체로 생성됩니다. 이렇게 되면 각 스레드가 서로 다른 model 객체를 사용하게 되므로 동시성 문제가 발생하지 않습니다.

또한, FrontControllerServletV4의 model 변수는 메소드 내에서만 사용되기 때문에 메소드가 종료되면 해당 model 객체는 가비지 컬렉터에 의해 제거됩니다. 따라서 다른 요청과는 독립적인 객체로 동작하므로 동시성 문제가 발생하지 않습니다.

이렇게 설계된 이유는 각각의 요청이 독립적으로 처리되어야 하기 때문입니다. 각 요청마다 다른 model 객체를 사용함으로써 상호간에 영향을 미치지 않고 개별적으로 데이터를 처리할 수 있습니다.

만약 동시에 save를 수행한다면, 해당 요청에 대한 처리는 각각의 스레드가 담당하므로 서로 영향을 주지 않습니다.

다른 질문이 있으시면 언제든지 물어보세요. 즐거운 학습 되세요!

채널톡 아이콘