스레드는 명령어가 CPU를 통해서 수행되는 객체의 단위이다.
하나의 프로세스 내에는 반드시 1개 이상의 스레드가 존재하며, 이러한 스레드는 같은 프로세스에 있는 자원과 상태를 공유한다.
같은 프로세스 내에 있는 스레드는 같은 주소 공간에 존재하게 되며 동일한 데이터에 접근할 수 있다.
또한 하나의 스레드가 수정한 메모리는 같은 메모리를 참조하는 스레드에 영향을 미치게 된다.
예를 들어 하나의 스레드에서 오픈한 파일을 다른 스레드가 사용할 수 있다. 프로세스가 종료되면 그 프로세스에 속해있던 스레드도 함께 종료된다.
하나의 프로세스 안에서 여러 개의 루틴을 동시에 수행하여서 수행 능력을 향상하려고 할 때 스레드를 사용하게 되는데, 독립적으로 수향하여 처리하려고 할 때 사용하게 된다. 즉 여러 개의 작업 단위로 구성된 프로그램의 요청을 동시에 처리하기 위함이다.
예를 들어, 워드 프로세서에서 사용자로부터 키보드 입력을 받거나, 그래픽이나 UI를 그리는 문법 오류를 체크하는 등 워드 프로세서 내에서 여러 요청들을 동시에 처리해야 하는데, 이때 스레드가 필요하게 된다.
스레드는 가상 CPU, 수행 코드, 처리 데이터로 구성된다.
run()
Method 코드이다.