스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티스레드(multithread)라고 한다.
쉽게말해 프로세스 하나에 여러개의 CPU 수행단위를 두는 것이다. (CPU를 수행하는 단위)
Thread 의 구성
program counter
register set
stack space
Thread가 동료 thread와 공유하는 부분(=task)
code section
data section
OS resources
전통적인 개념의 heavyweight process는 하나의 thread를 가지고 있는 task로 볼 수 있다.
다중 스레드로 구성된 테스크 구조에서는 하나의 서버 스레드가 blocked (waiting)상태인 동안에도 동일한 테스크 내의 다른 스레드가 실행 되어 빠른 처리를 할 수 있다.
동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율과 성능향상을 얻을 수 있다.
스레드를 사용하면 병렬성을 높일 수 있다.
스레드의 장점
응답성
예를들어 여러개의 스레드 중 먼저 종료된 스레드가 있을 때 화면에 띄워 주고 나머지 스레드는 계속해서 실행할 수 있기 때문에 사용자 입장에서 빨리 결과를 볼 수 있다.