🧵 Thread란?
- 하나의 작업 흐름으로, 한 번에 한 줄씩 코드를 실행함
- Java에서
main() 실행 시, main Thread가 실행됨
- 동시 처리를 위해서는 추가 Thread가 필요
🚀 Servlet과 Thread의 관계

- 클라이언트가 HTTP 요청을 보내면 →
WAS가 Thread를 생성해 Servlet 객체를 호출
📌 Servlet 객체 호출 흐름
: 클라이언트 요청 → WAS → Thread 할당 → Servlet 호출 → 응답 반환
🔁 Single Thread 처리 방식 (단일 처리 방식)
- 하나의 Thread가 요청을 순서대로 처리

- 클라이언트 요청 및 TCP/IP 연결
- Thread 할당 후 Servlet 호출
- 응답 후 Thread 반환
❗ 문제점:
- 첫 요청이 지연되면 다른 요청도 모두 대기
- 결과적으로 Timeout 오류 발생 가능성 ↑
🧶 Multi Thread란?
- 하나의 프로세스 내에서 여러 개의 작업 흐름(Thread)을 동시에 수행할 수 있게 해주는 기술
- 각 쓰레드는 독립적으로 실행되지만, 동일한 메모리 공간을 공유하며 협력
🧩 Multi Thread 처리 방식
- WAS는 동시 요청에 대한 처리를 위해 Multi Thread를 지원

- 첫 번째 요청의 작업을 Single Thread가 수행 중
- 두 번째, 세 번째 요청이 들어오고 연결을 완료
- Thread를 사용하기 위해 작업이 끝날 때까지 대기
- 요청이 모두 사라질 때까지 (대기 → 작업 수행 → 스레드 반환)작업을 반복
> Multi Thread로 동시 요청에 대한 처리를 하는 방법
1. 요청마다 새로운 Thread 생성
장점:
- 동시 요청 처리 가능
- 요청 하나가 지연되어도 다른 요청에 영향 없음
단점:
- Thread 생성 비용 큼
- 무제한 생성 → 리소스 부족 → 서버 다운 위험
- Context Switching 비용 발생
🧠 Context Switching
- CPU가 여러 작업을 교대로 수행하면서 작업 상태를 저장하고 불러오는 과정
2. Thread Pool 방식
- 미리 만들어진 Thread를 요청마다 빌려서 사용 후 반납

장점:
- Thread 생성/종료 비용 절감
- 응답 속도 ↑
- 최대 Thread 수 제한 → 서버 과부하 방지
단점:
- Thread가 모두 사용 중이면 요청은 대기 또는 거절
- Thread 수가 너무 많으면 → 메모리, CPU 부족
📌 Tomcat 기본 설정: 최대 200개 Thread → 성능 테스트 통해 적정 수 조정 필요