본문 바로가기
Java

Java) 프로세스와 쓰레드

by NH_club 2023. 9. 14.

프로세스: 운영체제로부터 자원을 할당받는 작업의 단위

쓰레드: 프로세스가 할당받은 자원을 이용하는 실행의 단위

프로세스의 구조

OS가 프로그램 실행을 위한 프로세스를 할당해줄때 프로세스안에 프로그램 Code와 Data 메모리영역을 함께 할당해준다.

Code는 Java main 메소드와 같은 코드를 말한다.

Data는 프로그램이 실행중 저장할 수 있는 저장공간을 의미한다.

Memory는 지역변수, 매개변수 리턴변수를 저장하는 Stack 영역과 프로그램이 동적으로 필요한 변수를 저장하는 Heap 영역으로 나뉜다

쓰레드

프로세스가 작업중인 프로그램에서 실행요청이 들어오면 쓰레드를 만들어 명령을 처리하도록 한다.

프로세스 안에는 여러 쓰레드가 있고, 쓰레드들은 실행을 위한 프로세스 내 주소공간이나 메모리공간(Heap)을 공유한다.

쓰레드는 각각 명령처리를 위한 자신만의 메모리공간(Stack)도 할당 받는다.

Java 프로그램을 실행하면 JVM 프로세스 위에서 실행된다.

Java 프로그램 쓰레드는 Java Main 쓰레드로부터 실행되며 JVM에 의해 실행된다.

싱글 쓰레드

프로세스 안에서 하나의 쓰레드만 실행되는 것을 말한다.

Java 프로그램의 경우 main 메소드만 실행시켰을 때 이것을 싱글 쓰레드라고 한다.

Java는 기본적으로 메인 쓰레드라는 쓰레드가 싱글 쓰레드로 실행된다.

멀티 쓰레드

프로세스 안에서 여러개의 쓰레드가 실행되는 것을 말한다.

하나의 프로세스는 여러개의 쓰레드를 가질 수 있으며 이 쓰레드들은 프로세스의 자원을 공유한다.

장점:

여러개의 작업을 동시에 할 수 있어서 성능이 좋아진다.

스택을 제외한 모든 영역에서 메모리를  공유하기 때문에 자원을 효율적으로 사용할 수 있다.

응답 쓰레드와 작업 쓰레드를 분리하여 빠르게 응답을 줄 수 있다.

단점:

동기화 문제가 발생할 수 있다.

교착 상태가 발행할 수 있다.

'Java' 카테고리의 다른 글

Java) 배열  (0) 2023.09.21
Java) 데몬 쓰레드와 사용자 쓰레드  (0) 2023.09.18
Java) 병목현상 해결 과정  (0) 2023.08.23
JMeter 변수 설정  (0) 2023.08.15
JMeter 성능 테스트  (0) 2023.08.15