본문 바로가기

자바공부

자바 멀티스레딩, 명품자바프로그래밍13장

728x90
반응형

* 자바에는 프로세스 개념이 존재하지 않고 스레드 개념만 존재하며 자바 가상 기계(JVM)는 멀티스레딩만 지원한다.

자바 스레드(java thread)란 JVM에 의해 스케쥴되는 실행 단위 코드 블록이다.

 

* 하나의 JVM은 하나의 자바 으용프로그램만 실행한다.

JVM이 실행될 때 JVM이 자바 으용프로그램을 로딩하여 실행시킨다.

자바 응용프로그램이 종료되면 JVM도 함께 종료된다.

 

* 각 자바 응용프로그램은 별개의 메모리 영역에서 독립적으로 실행된다.

JVM은 멀티스레딩을 지원하며 따라서 자바 응용프로그램은 하나 이상의 스레드를 생성할 수 있다.

JVM은 하나의 자바 응용프로그램만 실행 가능

* 두 개의 자바 응용프로그램을 실행하는 경우를 보여 주는데, 하나의 응용프로그램이 실행되면 이를 위해 하나의 JVM이 실행되며, 두 응용프로그램이 서로 정보를 주고받고자 하는 경우 소켓 통신 등의 여러 통신 방법을 이용한다.

두 개의 자바 응용프로그램이 서로 협력하여 실행하고자 하는 경우

* 스레드 스케줄링은 전적으로 JVM에 의해 이루어진다.

또한 스레드가 몇 개 존재하는지, 스레드로 실행되는 프로그램 코드의 메모리상의 위치는 어디인지, 스레드의 상태는 무엇인지, 스레드의 우선순위는 얼마인지 등 많은 정보를 사실상 JVM의 메모리 영역 내에서 관리된다.

개발자의 임무는 자바 스레드로 작동할 스레드 코드를 작성하는 일뿐이다.

스레드를 관리하는 일은 모두 JVM의 일이다.

 

4개의 자바 스레드로 구성된 응용프로그램을 실행하는 JVM

* 각 스레드가 실행할 스레드의 시작 코드는 개발자가 작성한 응용프로그램 내에 작성되어 있다.

스레드가 생성되면 관련된 정보(Thread Control Block, TCB)가 생성되며 이들은 모두 JVM에 의해 관리된다.

TCB는 스레드 코드의 시작 주소, 스레드 상태, 스레드의 우선 순위 값 등이다.

TCB 정보를 토대로 어떤 스레드를 실행시킬지를 결정하는 스레드 스케줄링은 JVM에 의해 이루어진다.

반응형