# 중요한 개념: 스레드

Java 프로그램은 스레드로 구성되어 있습니다. 스레드는 프로그램 내에 존재하는 독립적인 실행 시퀀스입니다. 어떤 Java 프로그램을 실행할 때, 여러 개의 스레드를 동시에 실행하여 여러 가지 동작을 수행하게 할 수 있습니다. 이런 유형의 프로그램을 다중 스레드 프로그램이라고 합니다.

모든 스레드는 하나의 스레드 그룹에 속합니다. 스레드 그룹은 간단하게 말해서 연관된 스레드들을 논리적으로 묶어 놓은 것입니다.

`main` 스레드 그룹은 모든 프로그램에 존재하는 그룹입니다. 사용자가 키보드를 사용할 때마다, Java Development Environment은 `main` 스레드 그룹의 스레드와 대화를 합니다.

스레드가 멈추면, 그 스레드를 구성하는 호출 스택을 들여다 볼 수 있습니다. 실행 중인 스레드의 호출 스택도 들여다 볼 수 있지만, 그 경우, 볼 수 있는 것은 스레드의 가장 마지막 스냅 사진과 같은 현재의 정보 뿐입니다.

호출 스택에는 호출되었지만 실행 결과를 호출자에게 돌려주지는 않은 모든 메서드가 들어 있습니다. 메서드는 프로시저나 함수와 비슷한 것입니다. 호출 스택에 있는 메서드들은 호출된 순서대로 나열되어 있습니다. 프로그램이 멈추었을 때 실행 중이던 메서드가 스택의 제일 위에 나옵니다.

다음 과:

  제 1과: 디버깅 세션 시작하기