Java
Java 개념 정리 ) 프로세스와 쓰레드
banasu0723
2024. 8. 12. 04:35
< 프로세스와 쓰레드>
프로세스
- 운영체제로부터 자원을 할당받는 작업의 단위
- 프로세스의 구조
- Code : Java main 메소드와 같은 코드를 말한다
- Data : 전역변수, 정적 변수(static), 배열 등 초기화된 데이터를 저장하는 공간
- Memory(메모리 영역)
- Stack : 지역변수, 매개변수 리턴 변수를 저장하는 공간
- Heap : 프로그램이 동적으로 필요한 변수를 저장하는 공간 (new(), mallock())
쓰레드
- 프로세스가 할당받은 자원을 이용하는 실행의 단위
- 프로세스 내에서 일하는 일꾼(코드 실행의 흐름)이라고 생각하면 된다
- 프로세스가 작업 중인 프로그램에서 실행 요청이 들어오면 쓰레드를 만들어 명령을 처리하도록 한다
- 쓰레드의 자원
- 프로세스 안에는 여러 쓰레드들이 있고 , 실행을 위한 프로세스 내 주소 공간이나 메모리공간 (Heap) 을 공유받는다
- 추가로 쓰레드들은 각각 명령 처리를 위한 자신만의 메모리 공간 (Stack) 도 할당받는다
- Java 쓰레드
- 일반 쓰레드와 동일하며, JVM 프로세스 안에서 실행되는 쓰레드이다
- 멀티 쓰레드
- 필요에 따라서 작업 쓰레드들을 생성해서 병렬로 코드를 실행시킬 수 있다
- Java는 멀티 쓰레드를 지원한다
- 싱글 쓰레드와 멀티 쓰레드
- 싱글 쓰레드 : 프로세스 안에서 하나의 쓰레드만 실행되는 것
- main() 메서드만 실행시켰을 때 이것을 싱글 쓰레드라고 한다
- 멀티 쓰레드 : 프로세스 안에서 여러 개의 쓰레드가 실행되는 것
- 하나의 프로세스는 여러개의 쓰레드를 가질 수 있으며, 이 쓰레드들은 프로세스의 자원을 공유한다
- but 충돌이나 데드락이 발생할 수도 있다
- 싱글 쓰레드 : 프로세스 안에서 하나의 쓰레드만 실행되는 것