강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của jonghaha7
jonghaha7

câu hỏi đã được viết

Spring MVC Phần 1 - Công nghệ cốt lõi phát triển web backend

Đồng thời - Đa luồng

멀티 쓰레드와 싱글톤 스레드

Viết

·

488

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)

2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)

3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
아니오

[질문 내용]
안녕하세요. 좋은 강의 감사드립니다.
강의를 보다보니 몇 가지 궁금한 부분이 생겼습니다.
동시성 이슈를 해결하기 위해 멀티 스레드를 활용하는 부분은 이해가 되었는데요, WAS 가 리소스를 효율적으로 사용하기 위해 서블릿을 싱글톤패턴을 통해 인스턴스 하나를 사용하는 경우
1. 여러 스레드가 하나의 서블릿 인스턴스에 동시에 접근하여 문제가 발생하지는 않나요?
2. 이런 부분들은 WAS 의 서블릿컨테이너가 알아서 관리를 해주는걸까요?
3. 맞다면 혹시 서블릿 컨테이는 어떤방식으로 관리하는지에 대해 알아볼 수 있는 자료같은게 있을까요?


springmvc

Câu trả lời 2

1

안녕하세요. jaden님, 공식 서포터즈 y2gcoder입니다.

혹시 다음 링크(클릭) 를 참고해보시겠습니까?

감사합니다.

0

jaden님의 프로필 이미지
jaden
Người đặt câu hỏi

답변 감사합니다.
링크를 통해 추측한 내용은 Servlet 은 힙 영역에 저장되어 애플리케이션의 모든 영역에서 접근 가능하고, 각 Thread 들은 Servlet 으로부터 HttpRequest, HttpResponse 정보를 전달받아 stack 영역에 두고 사용함으로써 Thread 사이의 동시성 이슈를 해결할 수 있다고 생각되는데요.

HttpRequest 와 HttpResponse 는 Servlet 에서 생성해서
각 Thread 로 전달할 때 동시성 이슈가 생기지는 않나요?
예를들어 다음과 같은 순서로 진행되는 경우입니다.

1번 요청 진입
Servlet 에서 1번 HttpRequest 객체 생성
(Servlet 이 HttpRequest 를 스레드에 전달하기 전)
2번 요청 진입
Servlet 에서 2번 HttpRequest 객체 생성

위와 같은 경우에는 1번 요청은 무시될 수 있을 것 같다는 생각이 들어서요.


이 또한 마찬가지입니다. 각 스레드마다 서블릿의 service()를 호출하고, service() 내에서 스레드마다 새로운 HttpServletRequest를 생성하기 때문에 스레드끼리 HttpServletRequest를 공유할 일은 없다고 생각합니다.

Hình ảnh hồ sơ của jonghaha7
jonghaha7

câu hỏi đã được viết

Đặt câu hỏi