효율적인 멀티스레드 프로그래밍을 위해서는 정교한 스케줄링을 통해 프로세스에게 주어진 자원과 시간을 여러 스레드가 낭비 없이 잘 사용하도록 해야 한다. 스레드 상태 스레드의 생성과 소멸 과정 스레드를 생성하고 start()를 호출하면 바로 실행되는 것이 아니라 실행대기열에 저장되어 자신의 차례가 될 때까지 기다리고, 실행대기열은 Queue와 같은 구조로 먼저 실행대기열에 들어온 스레드부터 실행한다. 실행대기상태에 있다가 자신의 차례가 되면 실행상태가 된다. 주어진 실행시간이 다되거나 yield()를 만나면 다시 실행대기상태가 되고 다음 차례의 스레드가 실행상태가 된다. 실행 중에 suspend(), sleep(), wait(), join(), I/O block에 의해 일시정지 상태가 될 수 있다. 지정된 ..