본문 바로가기
넓고 얕은 웹 지식

스레드 & 스레드 풀 1분 요약 정리

by 팡펑퐁 2023. 2. 5.
728x90

📌 프로세스란?

  • 실행 중인 프로그램으로 프로세스는 데이터와 메모리 등의 자원, 스레드로 구성된다.

 

 

📌  스레드란?

  • 프로세스 내에서 실제 작업을 수행하는 주체를 의미한다.
  • 모든 프로세스에는 한 가지 이상의 스레드가 존재한다.
  • 두 개 이상의 스레드를 가지는 프로세스를 멀티 스레드 프로세스라고 한다.
  • 동시 처리가 필요하면 스레드를 추가로 생성할 수 있다.
    • 사실 매우 빠르게 번갈아 가며 실행하는 것이다.

 

💡 요청마다 스레드를 생성 시 장단점

장점

  • 동시 요청을 처리할 수 있다.
  • 리소스(CPU, 메모리)가 허용할 때까지 처리가 가능하다.
  • 하나의 스레드가 지연되어도 나머지 스레드는 정상작동한다.
    • 여러 스레드가 서로 관계가 없기 때문이다.

 

단점

  • 스레드는 생성 비용이 매우 비싸다.
    • 고객 요청이 올 때마다 생성하면 응답속도가 느려진다.
  • 콘텍스트 스위칭 비용이 발생
    • 실행할 스레드를 바꾸는 데 드는 비용을 말한다.
  • 스레드 생성에 제한이 없어 요청이 너무 많으면 CPU, 메모리 임계점을 넘어 서버가 죽을 수도 있다.
  • 이를 해결하기 위해 스레드 풀을 만들어 미리 스레드 개수를 정해 넣어놓고, 요청이 올 때마다 스레드 풀에서 스레드를 꺼내 요청을 처리하고 다시 스레드 풀에 넣는 방식을 쓴다.

 

 

🤔 스레드 풀이란?

요청마다 스레드를 생성하는 것에 대한 단점을 보완할 수 있다.

  • 특징
    • 필요한 스레드를 스레드 풀에 보관하고 관리한다.
    • 스레드 풀에 생성 가능한 스레드의 최대치를 정할 수 있다.
      • 톰캣의 경우 최대 개수인 200개가 디폴트값이며 변경이 가능하다.
  • 사용
    • 스레드가 필요하면 이미 생성되어 있는 스레드를 스레드 풀에서 꺼내어 사용한다.
    • 사용이 끝나면 스레드 풀에 해당 스레드를 반납한다.
    • 최대 스레드가 모두 사용 중이어서 스레드 풀에 스레드가 없는 경우 요청을 거절하거나 대기하도록 설정할 수 있다.
  • 장점
    • 스레드가 미리 생성되어 있으므로 스레드를 생성하고 종료하는 비용이 절약되며 응답 시간이 빠르다.
    • 생성 가능한 스레드의 최대치가 있으므로 한 번에 수많은 요청이 들어와도 기존 요청을 안전하게 처리할 수 있다.

 

 

WAS의 멀티 스레드를 지원

  • 멀티 스레드에 대한 부분은 WAS가 알아서 처리한다.
  • 개발자가 멀티 스레드 관련 코드를 신경 쓰지 않아도 된다.
  • 개발자는 마치 싱글 스레드 프로그래밍을 하듯이 편리하게 소스코드를 개발할 수 있다.
  • 멀티 스레드 환경이므로 싱글톤 객체(서블릿, 스프링 빈)는 주의해서 사용해야 한다.
728x90