카테고리 없음

Thread Pool 이란?

JUNGKEUNG 2024. 8. 14. 20:40
반응형

프레스 중 병렬 작업처리가 많아지면 스레드 개수가 증가되고 그에 따른 스레드 생성과 스케줄링으로 인해 CPU 가 바빠져 메모리 사용량이 늘어난다. 따라서 시스템성능이 저하되고, 갑작스러운 병렬작업의 폭증에 따른 스레드 폭증을 막으려면 스레드 풀 Thread Pool을 사용해야 한다.

 

스레드 풀의 동작 방식

  1. 병렬 작업의 형태로 동시 코드를 작성한다.
  2. 실행을 위해 스레드 풀의 인스턴스에 제출한다.
  3. 제출한 인스턴스에서 실행하기 위해 재사용되는 여러 스레드를 제어한다.

스레드 풀을 사용하면 앞서 말한 비용적인 측면이나 context switching 상황에도 딜레이를 줄일 수 있는 장점이 있다.

하지만 단점으로는 스레드 풀에 너무 많은 스레드를 필요 이상으로 미리 만들어 놓는다면 이것 또한 과유불급으로 메모리 낭비이다. 그래서 상황에 맞게 예측하고 할당해서 사용하는 것이 좋다.

 

 

스레드풀을 구현하는 자바 예제

pulbic class MyCounter {
	private int count;
	
	public void increment(){
		try{
		 count = temp + 1;
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    public int getCount() {
        return count;
    }
}

 

총 정리

------------------------------------------------------------------------

Thread - 어떤 실행되는 프로그램 내에서 실행되는 흐름의 단위

Pool - 필요할 때마다 개체를 할당하고 해제하는 대신에 할 일 끝나고 준비된 상태로 초기화된 개체집합

 

ThreadPool은 처리해야할 일이 등록되기 전에 생성된다. 풀이 생성됨과 동시에 스레드들도 생성되어 풀에서 대기 한다.

 

동작 방식 으로는 병렬 작업의 형태로 동시 코드를 작성 후 실행을 위해 스레드 풀의 인스턴스에 제출한다. 제출한 인스턴스에서 실행하기 위해 재사용되는 여러 스레드를 제어한다.