인프런 커뮤니티 질문&답변

backendman님의 프로필 이미지

작성한 질문수

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

프로세스와 스레드

자바 스레드관련 질문이 있습니다!

24.07.25 11:49 작성

·

274

·

수정됨

1

 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.


1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

[질문 내용]
여기에 질문 내용을 남겨주세요.
예전부터 궁금하던건데 고급강의에서 스레드를 다뤄주셔서 너무 감사드립니다.

궁금했던 질문

1.war,jar 파일이 tomcat 에서 구동되면 강의에서 설명해준것처럼 tomcat 프로그램을 프로세스가 작동할텐데 동시에 3개의 요청이 tomcat 으로 들어오게 된다면 tomcat 을 돌리고 있는 프로세스는 총 3개의 스레드를 스레드풀에서 가져와서 각 각 요청에 1개씩 스레드를 할당하여 was 가 멀티스레드 처럼 작동되게 되는건가요?

2.tomcat 으로 war,jar 파일을 배포하고 운영하면 tomcat 의 스레드가 war,jar 의 소스를 1줄씩 읽는거고 war,jar(자바) 에서는 스레드가 따로 생성되지 않는건가요? (자바에서 멀티스레드 사용하지 않은경우)

3.2번이 맞다고 했을때 만약 자바소스에서 멀티스레드를(총3개 스레드사용) 사용했다면 tomcat 의 스레드는 1개일텐데 어떻게 멀티스레드가 되는건가요..? 자바에서 스레드를 2개 더 생성시켜버리는건가요? 궁금합니다 ㅠ

4.그리고 자바에서 스레드 숫자를 설정해버리면(4개로 설정) tomcat 에서 4명의 사용자 요청만 동시에 처리할 수 가 있다고 하셨는데

자바에서 스레드 숫자를 설정하는순간 톰캣의 스레드풀에서 4개의 스레드만 사용가능해지는건가요..?

답변 1

3

김영한님의 프로필 이미지
김영한
지식공유자

2024. 07. 26. 14:43

안녕하세요. ohmyfun님

스레드와 Tomcat의 동작에 대해 궁금해하시는 것 같습니다. 질문들을 하나씩 답변해 드리겠습니다.

1. 네, 맞습니다. Tomcat에서 WAR나 JAR 파일이 구동될 때, 기본적으로 다음과 같이 동작합니다:

- Tomcat은 하나의 프로세스로 실행됩니다.

- 여러 요청이 동시에 들어오면, Tomcat은 자체 스레드 풀에서 스레드를 가져와 각 요청을 처리합니다.

- 따라서 3개의 동시 요청이 들어오면, Tomcat은 스레드 풀에서 3개의 스레드를 할당하여 각 요청을 병렬로 처리합니다.

이렇게 함으로써 Tomcat은 멀티스레드 방식으로 동작하여 여러 요청을 동시에 처리할 수 있습니다.

2.3 이 부분에 대해서는 다음과 같이 이해하시면 됩니다.

- WAR나 JAR 파일은 단순히 자바 클래스 파일의 모음일 뿐입니다.

- 자바 프로세스로 톰캣을 실행시키는 것이고, 톰캣은 WAR나 JAR를 라이브러리로 포함해서 실행할 뿐입니다.

- 쉽게 이야기해서 자바로 톰캣을 실행시키는 것이고, WAR, JAR는 톰캣에 포함된 라이브러리일 뿐입니다. 더 쉽게 비유하자면 톰캣이 바로 자바 프로세스 입니다.

4. 여기서 말하는 스레드 풀의 숫자는 톰캣 자체가 바로 자바이기 때문에, 톰캣에 비유하자면 톰캣의 스레드 풀 숫자를 4개로 설정한 것으로 이해하시면 됩니다.

감사합니다.