작성
·
21
0
위 링크 속 질문에서 영한쌤이 아래와 같은 답변을 해줬습니다
"서버가 한대만 있고, 자바(JVM)로 웹 애플리케이션을 단 하나만 구동하는 상황이면 자바 만으로 동시성 제어를 할 수 있습니다."
MVC 1편 강의에서 배운 내용으로는
클라이언트 요청이 들어오면 was 내에 미리 만들어진 쓰레드들이 각 요청을 받고 서블릿 코드를 실행한다고 이해하고 있습니다
그렇다면 서버가 한 대여도 쓰레드는 이미 여러개가 만들어져 있으므로
동시에 여러 요청 처리가 가능하기에 자바만으로 동시성 제어가 안 되는거 아닌가요?
잘못 이해한 부분이 있다면 지적부탁드립니다
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 조태준님.
위의 질문과 관련하여 동시성 문제 및 자바에서의 처리 방식에 대한 이해를 돕기 위해 몇 가지 중요한 점들을 설명드리겠습니다.
서블릿과 동시성: 서버가 한 대일 경우에도 JVM 내에서는 여러 스레드가 동시에 실행될 수 있습니다. 각 클라이언트 요청은 별도의 쓰레드에서 처리되기 때문에, 서버의 물리적 대수가 동시성 제어에 대한 직접적인 영향을 미치지는 않습니다.
자바의 동시성 제어: 자바에서는 synchronized
키워드나 다른 동시성 도구를 사용하여 한정된 자원에 대한 동시 접근을 통제할 수 있습니다. 이는 서버가 한 대일 때 JVM 레벨에서의 접근 제어를 의미합니다. 따라서 대개의 경우 JVM에서의 동시성 제어는 가능하지만 모든 상황에서 완벽한 해결책은 아닙니다. 특히 여러 대의 서버가 필요한 경우에는 데이터베이스나 외부 시스템 레벨에서의 동시성 제어도 고려해야 합니다.
실무적인 동시성 제어 방법: 서버가 여러 대거나 분산된 환경에서는 데이터베이스의 유니크 제약조건이나 락을 사용하여 동시성 제어를 합니다. 이는 같은 데이터를 동시에 처리하는 것을 방지하는 방법입니다.
관련 질문이 운영되는 게시글에서 참고하실 만한 유용한 토론들이 포함된 링크들을 첨부해드립니다:
위 링크들에서 제공하는 정보를 통해 더 깊이 있는 이해를 도모하시길 추천드립니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
영한님의 답변 부탁드립니다!