서론
프로세스 중 병렬 작업처리가 많아지면 스레드 개수가 증가되고 CPU가 바빠져 사용량이 늘어난다. 갑작스럽게 고객의 요청이 많아지면 CPU , 메모리 임계점 넘어 서버가 죽을 수 있다. 따라서 스레드 풀을 사용해야 한다.
쓰레드란 ?
사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것을 말한다.
- 애플리케이션 코드를 하나하나 순차적으로 실행하는 것
- 자바 메인 메서드를 처음 실행하면 main이라는 이름의 쓰레드가 실행
- 쓰레드가 없다면 자바 애플리케이션 실행이 불가능
- 쓰레드는 한번에 하나의 코드라인만 수행
- 동시 처리가 필요하면 쓰레드를 추가로 생성
단일 쓰레드 사용
다중 요청에 쓰레드를 한개를 사용했을 때 지연이 생기면 요청1과 요청2에 대한 응답을 못하게 된다.
요청마다 쓰레드 생성
요청마다 쓰레드를 생성하면 동시 요청을 처리할 수 있으며 하나의 쓰레드가 지연되어도, 나머지 쓰레드가 정상 작동하여 요청을 처리할 수 있다. 하지만 쓰레드 생성 비용이 매우 비싸며 스레드 생성에 제한이 없기 때문에 CPU , 메모리 임계점을 넘어 서버가 죽을 수 있다. 또한 신규 쓰레드를 생성하는 동안 지연이 생길 수 있다.
쓰레드 풀
쓰레드 풀은 필요한 쓰레드를 스레드풀에 보관하여 관리한다. 쓰레드가 필요하면, 이미 생성되어 있는 쓰레드를 쓰레드 풀에서 꺼내서 사용한다.
장점
- 쓰레드가 미리 생성되어 있으므로, 쓰레드를 생성하고 종료하는 비용이 절약되고, 응답 시간이 빠르다.
- 생성 가능한 쓰레드의 최대치가 있으므로 많은 요청이 들어와도 기존 요청은 안전하게 처리할 수 있다.
참고
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard
'Programming > Back-end Language' 카테고리의 다른 글
[Spring] Http API Json 형식 데이터 받고 출력하기 (0) | 2022.04.15 |
---|---|
[JAVA] Http 요청 데이터 -GET쿼리 파라미터 사용 방법 (0) | 2022.04.14 |
[Spring] Test 코드를 작성해야 하는 이유/방법 (0) | 2022.04.13 |
[Spring] DI 의존성 주입이란 ? (0) | 2022.04.13 |
[JAVA] AOP란 무엇일까? (0) | 2022.03.28 |