본문 바로가기

Server

Tomcat ThreadPool

Thread

컴퓨터가 실행이 되고, 소히 말하는 프로그램이 실행될때 그 실행 주체는 Process이다.

 

그러한, 프로세스내에의 실행흐름이라고 부르는 실행주체가 Thread이다.

또한, CPU core가 이 Thread를 물리적으로 실행시켜주는 실행주체이다.

그래서 한 프로그램 (프로세스)내에서 할수 있는것들이 많아져 Thread가 많아지면 좋지 않을까라는 생각을 할수 있다.

 

하지만, 그렇지만은 않다.

Thread는 생성 비용이 많이 드는 작업이다.

 

1. Java는 One-to-One Threading-Model로 Thread를 생성한다.

2. User Thread(Process의 스레드) 생성시OS Thread(OS 레벨의 스레드) 와 연결해야 한다.

3. 새로운 Thread를 생성할 때마다 OS Kernel의 작업이 필요하다.

4. 작업 요청이 들어올 때마다 Thread를 생성하면 최종적인 요청 처리 시간이 증가하는 것이다.

5. 이는 전체적인 시스템의 응답속도 저하(성능 저하)라는 문제를 야기한다.

 

Thread Pool

1. Thread를 요청이 생길때마다, 생성해서 반영하는 작업은 위와 같은 이유로 지양해야 한다.

2. 그래서, 이를 해결하기 위해 미리 Thread들을 만들어두어 Pool에 두고 재활용한다는 아이디어가 Thread Pool이다.

 

WAS - TOMCAT

이러한 Thread Pool을 활용한 것이 바로 이 WAS TOMCAT이다.

1. SpringBoot 의 내장 Servelt 컨테이너 중 하나

2. Java 기반의 WAS

3. Java의 Thread Pool 클래스와 매우 유사한 자체 스레드 출 구현체를 가지고 있다.

4. 스레드풀을 자바에서 구현한 구현체가 ThreadPoolExecutor이다.

5. org.apache.tomcat.util.threads.ThreadPoolExecutor

 

'Server' 카테고리의 다른 글

Tomcat  (0) 2023.05.04
HTTP 상태코드  (0) 2022.02.05
Java EE와 Servlet/JSP의 관계와 WAS 개념 정리  (0) 2022.01.25
분산 시스템  (0) 2022.01.25
Was란 무엇인가  (0) 2022.01.25