Thread

Angelo·2020년 12월 17일
0

SPRING

목록 보기
11/34

✔ Thread


Process

단순히 실행 중인 프로그램. 유저가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행.
데이터와 메모리 등의 자원 그리고 스레드로 구성.


Thread

프로세스 내에서 실제로 작업을 수행하는 주체.
모든 프로세스에 한개 이상의 스레드가 존재하여 작업 수행.
두개이상의 스레드를 가진 프로세스를 멀티스레드 프로세스라고 표현.

장점 :

  • 한개의 스레드를 생성하는데 드는 비용은 한개의 프로세스를 생성하는데 드는 비용보다 적다.

  • 스레드는 하나의 프로세스안에서 수행되므로 처음부터 공유 메모리를 갖지만, 멀티 프로세스 사이에 메모리를 공유하기 위해서는 공유 메모리를 별도로 생성 해야한다.

단점 :

  • 스레드를 사용하는데는 일정량의 시간과 자원이 소비되며 따라서 사용할 수 있는 스레드의 개수에는 제한이 있다.

  • 동시에 수행되는 스레드 개수가 많을 수록 스레드 스케쥴링하는데 소비되는 시간이 많아지며, 이는 어플리케이션의 성능을 저하시키는 요인이 된다.


Thread pooling

기존의 스레드의 단점을 보완, 해결.

특징 :

  • 미리 생성되어 있는 스레드를 재 사용, 스레드를 생성하는데 소비되는 시간을 줄인다.

  • 동시에 생성될 수 있는 스레드의 개수를 제한함으로써 시스템의 자원 소비량을 제한한다.

장점 :

  • 어플리케이션의 전체 성능을 일정 수준으로 유지 가능

동작 원리 :

사용자의 요청을 작업 큐에 넣고 이미 만들어 놓은 스레드에 할당한다.
일을 다 처리한 스레들들은 다시 어플리케이션에 결과 리턴.

단점 :

  • 사용 안하는 스레드를 많이 만들어 놓으면 메모리 낭비
profile
나만의 학습 노트

0개의 댓글