- 실행 중인 프로그램을 의미한다.
- OS위에 프로그램을 실행시키면 프로세스라는 이름으로 실행되는 것이다.
- 세 프로그램 모두 각각의 프로세스로 실행되며
크롬 브라우저를 2개 띄우면 크롬브라우저 프로세스도 2개가 띄워진 것이다.
OS가 프로그램 실행을 위한 프로세스를 할당해줄때 프로세스안에 프로그램 Code와 Data 그리고 메모리 영역(Stack, Heap)을 함께 할당해준다.
- Code는 Java main 메소드와 같은 코드를 말한다.
- Data는 프로그램이 실행중 저장할 수 있는 저장공간을 의미한다.
- Memory
- Stack : 지역변수, 매개변수, 리턴변수를 저장하는 공간
- Heap : 프로그램이 동적으로 필요한 변수를 저장하는 공간 (new(), mallock())
프로세스내에서 일하는 일꾼(코드실행의 흐름)이다.
쓰레드의 생성
- 프로세스가 작업중인 프로그램에서 실행요청이 들어오면 쓰레드(일꾼)을 만들어 명령을 처리하도록 한다.
- 즉, 프로세스가 만들어지면서 생성하는것이 아닌 업무 요청이 왔을 때 생성하고 일을 끝내면 삭제되는 것이다.
쓰레드의 자원
- 프로세스 안에는 여러 쓰레드(일꾼)들이 있고, 쓰레드들은 실행을 위한 프로세스 내 주고공간이나 메모리공간(Heap)을 공유 받는다.
- 쓰레드(일꾼)들은 각각 명령처리를 위한 자신만의 메모리공간(Stack)을 할당받는다.
일반 쓰레드와 동일하며 JVM 프로세스 안에서 실행되는 쓰레드
- java 프로그램 쓰레드는 Java Main 쓰레드부터 실행되며 JVM에 의해 실행된다.
<-> 싱글 쓰레드
자바는 메인 쓰레드가 main() 메서드를 실행시키면서 시작이 된다.
프로세스 안에서 하나의 쓰레드만 실행되는 것이다.
메인 쓰레드
라고 한다.메인 쓰레드
가 종료되면 JVM도 같이 종료된다.프로세스 안에서 여러개의 쓰레드가 실행되는 것이다.