<스레드 사용의 이유를 알아보기 전에, 먼저 프로세스를 이용한 다중 작업의 문제점을 살펴볼 필요가 있습니다.>
운영 체제는 시분할을 이용하여 동시 실행을 지원합니다. 멀티캐스팅을 구현하려면 각 프로세스가 문맥(Context) 객체를 가져야 합니다. 작업 중인 현재 프로세스의 문맥을 일시 중단하고 다른 문맥으로 전환하는 것을 '문맥 전환' 또는 '문맥 스위칭(Context Switching)'이라고 합니다.
-순차적으로 진행되어 이전 작업이 완료될 때까지 후속 작업이 대기하는 실행 방식입니다.
-순서와 상관 없이 독립적인 프로그램(맥락)을 생성하여 이전 작업의 완료 여부와 무관하게 다른 작업들을 동시에 진행할 수 있는 방식입니다. 프로세스 간 데이터 공유와 컨텍스트 스위칭의 부담 그리고 형평성 문제가 발생할 수 있습니다.
스레드(thread)란 프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미합니다.
더 작은 단위의 시간을 분할하여 계층화가 발생하며, 이로 인해 프로세스 아래 스레드라는 단위가 생성됩니다. 시간은 프로세스에 할당되어 스레드와 공유됩니다.