[JAVA] 스레드 풀의 개념과 필요성

스레드 풀의 개념

병렬 처리가 많아지면 스레드의 생성 및 스케줄링에 메모리 사용량이 늘어납니다.

스레드 풀은 다수의 스레드를 미리 생성하여 특정 작업을 수행할 때 이용하는 기법으로, 이를 통해 스레드의 생성 및 스케줄링에 따른 메모리를 줄이고 효율적인 작업 관리를 할 수 있습니다. 
이는 다수의 클라이언트 요청이 동시에 들어올 때, 서버에서 각 요청을 스레드로 처리해야 하는 상황에서 특히 중요합니다.

 

스레드 풀 구성요소

  • 스레드 : 작업을 수행하는 단위
  • 작업 큐 : 스레드 풀로 보내지는 작업들을 저장하는 공간
  • 작업(태스크) : 스레드가 수행해야 될 작업

스레드 풀 동작방식

  1. 클라이언트가 작업을 스레드 풀에 제출하면 스레드 풀 작업 큐에 저장됩니다.
  2. 스레드 풀 내의 생성된 스레드들이 작업 큐에서 작업을 가져와 처리합니다.

스레드 풀 필요성

  1. 프로그램 성능 저하 방지 : 스레드들을 풀에 유지함으로써 스레드 생성 및 수거에 대한 비용을 줄여서 프로그램 전체적인 성능 저하를 방지할 수 있습니다.
  2. 작업 처리 지연 감소 : 스레드 풀을 사용하면 작업이 있을 때마다 스레드를 생성하지 않고 미리 만들어 놓은 스레드를 활용함으로써 작업을 즉시 처리할 수 있습니다.
  3. 자원 소모 방지 : 스레드의 개수를 제어할 수 있어서 시스템 부하를 방지할 수 있습니다.