본문 바로가기

자바공부

자바 스레드 정보, 명품자바프로그래밍13장

728x90
반응형

* 자바에서 스레드 코드는 Thread의 run() 메소드나 Runnable 인터페이스의 run() 메소드에 작성하여 객체 속에 캡슐화하도록 되어 있다.

start() 메소드가 호출되면 비로소 스레드는 생명을 가지고 실행되게 된다.

JVM에 의해 탄생된 스레드마다 흔히 Thread Control Block(TCB)이라고 불리는 스레드 관리 정보가 만들어진다.

 

* 스레드 관리 정보(TCB)

필드 타입 내용
스레드 이름 스트링 스레드의 이름으로서 사용자가 지정
스레드 ID 정수 스레드 고유의 식별자 번호
스레드의 PC(Program Count) 정수 현재 실행 중인 스레드 코드의 주소
스레드 상태 정수 NEW, RUNNABLE, WAITING, TIMED_WAITING, BLOCK, TERMINATED 등 6개 상태 중 하나
스레드 우선순위 정수 스레드 스케줄링 시 사용되는 우선순위 값으로서 1~10 사이의 값이며 10이 최상위 우선순위
스레드 그룹 정수 여러 개의 자바 스레드가 하나의 그룹을 형성할 수 있으며 이 경우 스레드가 속한 그룹
스레드 레지스터 스택 메모리 블록 스레드가 실행되는 동안 레지스터들의 값

 

* 자바에서 스레드는 두 가지 종류로 구분된다.

1) 데몬 스레드(deamon thread) : JVM이 스스로 필요에 의해 사용되는 스레드이다.

가비지 컬렉션 스레드(garbage collector)가 대표적인 데몬 스레드이다.

그렇지만 응용프로그램에서 작성한 스레드를 데몬 스레드로 표시하여 JVM이 데몬 스레드로 인식하게 할 수도 있다.

2) 일반 스레드(non-deamon thread) : main() 메소드도 대표적인 일반 스레드이다.

 

* JVM은 응용프로그램에서 생성한 일반 스레드가 하나라도 살아 있는 한 실행을 계속한다. 그러나 응용프로그램의 일반 스레드가 모두 종료하면 데몬 스레드가 살아 있더라도 JVM은 스스로 종료하고 따라서 응용프로그램의 실행은 종료된다.

반응형