스레드 ( Thread ) 란?
스레드1 처리중에 다른 요청이 들어온다면 어떻게 하면 될까?
2가지 방법이 있다. 하나는 요청1을 처리할 때 까지 요청2를 대기 시키는 것이고,
다른 하나는 요청마다 스레드를 생성 하는것이다. 하지만 위 2가지 모두 단점이 있다.
방법1은 요청1의 작업이 끝나지 않고 지연된다면 요청1,요청2 모두 작업을 못한다는 것이다.
방법2는 요청마다 스레드를 생성하는 것인데 이 경우엔 장단점이 있다.
장점
단점
스레드를 공부하다보니 크게 분류하여 특징들을 주유소에 비유해보니 외우기 쉬운것같다.
스레드를 주유기, 한대의 차량을 요청이라고 생각해보자.
하나의 주유기는 한대의 차량만 넣을 수 있다고 하고,주유기가 한대를 사용중에
만약 다른 차량이 들어온다면?
주유기를 한대 더 사용해야하거나, 앞의 차량의 주유가 끝날때까지 뒤의 차량은 기다려야 한다.
만약 주유기를 추가하게 된다면?
더 많은 차량을 받을 수 있을 것이다. 하지만 추가비용이 너무 많이 든다. 그리고
무지성으로 주유기를 추가하게 된다면 주유소는 폐업하게 될것이다.
스레드 풀??
스레드 풀이란 작업 처리에 사용되는 스레드를 제한을 두어 작업큐에 들어오는 작업들을 하나씩
스레드가 맡아 처리한다.
특징
이렇게 제한을 두어 미리 생성해둔 스레드를 꺼내 사용 반납 한다면 어떤 장점이 있을까?
주유소에 주유기를 처음부터 갯수를 정해 설치해놓는다면 ?
애초에 설치해둔 주유기 수량이 정해져있기 때문에 많은 차량들이 들어오더라도 기존에 주유 중인 차량들은 문제없이 주유할 수 있고, 기다리는 차량들을 거절하거나, 몇 대만 받을지 정할 수 있다.
그리고 만약 주유가 끝난 차량이 있다면 비워진 주유기쪽에 대기 차량을 유도하여 즉시 주유할 수 있다.
이렇게 써보니 혼자서 비유하며 외울때랑은 너무 어려워진 것같다..다음에는 좀더 쉽게 비유할 수
있게 생각하자