Notice
Recent Posts
Recent Comments
Link
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

우당탕탕 개발자 되기

Multi-Thread 본문

Spring

Multi-Thread

KimMINHun 2021. 9. 8. 22:52

Thread(쓰레드)

- 애플리케이션 코드를 하나하나 순차적으로 실행하는 것이다.

- 쓰레드가 존재하지 않다면 애플리케이션 실행은 불가능하다.

- 쓰레드는 한 번에 하나의 코드 라인만 수행한다.

- 동시 처리가할 일이 생기면 쓰레드를 추가로 생성

 

단일 요청

다중 요청

 

 

 

요청 마다 쓰레드 생성

장점

- 동시 요청을 처리 할 수 있다.

- 리소스가 허용될 때까지 처리 가능

- 하나의 쓰레드가 지연 되어도, 나머지 쓰레드는 정상 동작한다.

 

 

단점

- 쓰레드는 생성 비용은 매우 비싸다(요청마다 쓰레드를 생성하면, 응답 속도가 늦어진다)

- 쓰레드는 ContextSwitching 이 일어난다.

- 쓰레드 생성에 제한이 없다 -> 한 번에 요청이 몰릴 경우 서버가 죽을 수도 있다.

 

쓰레드 풀 (요청 마다 쓰레드 생성 단점 보완)

특징

- 필요한 쓰레드를 쓰레드 풀에 보관하고 관리

- 쓰레드 풀에 생성 가능한 쓰레드의 최대치를 관리(톰캣은 최대 200개)

 

사용

- 쓰레드가 필요하면, 이미 생성되어 있는 쓰레드를 꺼내서 사용

- 사용 종료시 쓰레드 풀에 다시 반납한다.

- 쓰레드 풀에 남은 쓰레드가 없을 경우 요청을 거절하거나, 대기하도록 설정할수 있다.

 

장점

- 쓰레드가 미리 생성되어 있으므로, 생성 및 종료 비용이 절약되며 또한 응답시간이 빠르다.

- 생성 가능한 쓰레드의 최대치가 있으므로, 많은 요청이 들어오더라도 기존 처리하던 요청은 안전하게 처리가능하다

 

최대 쓰레드 수를 낮게 설정하면

-> 동시 요청이 많을 떄 서버 리소스는 여유롭지만, 클라이언트 응답이 지연된다

최대 쓰레드 수를 높게 설정하면

->동시 요청이 많으면 CPU,메모리 리소스 임계점이 초과시 서버가 다운된다

 

핵심

- 멀티 쓰레드에 대한 부분은 WAS가 처리한다.

- 개발자는 싱글 쓰레드 프로그래밍을 하는 것처럼 소스 코드를 개발할수 있다.

- 다만 멀티 쓰레드 환경이므로 싱글톤 객체는 주의해서 사용

 

출처 ) https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard

'Spring' 카테고리의 다른 글

템플릿  (0) 2021.09.29
타임리프  (0) 2021.09.29
웹 어플리케이션의 이해  (0) 2021.09.08
파일 업로드 방식  (0) 2021.03.27
트랜잭션(Transaction) 관리  (0) 2021.03.24