본문 바로가기

Java 공부

12장 스레드 상태


스레드는 new연산자로 객체를 생성하고 나서, 종료를 할 때까지 여러 상태를 가질 수 있다.




new연산자로 생성되어진 스레드 객체는 start()메소드를 실행하여 실행 대기(Runnable) 상태에 있게 된다.

실행 대기 상태에 있는 스레드는 CPU 스케줄러에 의해서 선택이 되면 실행을 하게 되는데,

실행과 실행 대기 상태를 번갈아가며 반복하다가 run()메소드가 끝나면 종료하게 된다.


그런데 실행상태에서 실행 대기로 가지 않고 일시 정지 상태로 가는 경우가 있다.

일시 정지 상태에 있는 스레드는 다시 실행 대기 상태로 가고, 실행 대기 상태에서 CPU스케줄러의 선택을 받아서 다시 실행을 하게 된다.

 

 스레드 클래스에는 상태에 대한 열거형 Thread.State를 중첩 클래스로 정의해 놓았는데

Thread.State가 가지고 있는 열거 상수는  다음 표와 같다.

상태 

 열거 상수

설명 

 객체 생성

 NEW

 스레드 객체가 생성, 아직 start() 메소드가 호출되지 않은 상태

 실행 대기

 RUNNABLE

 실행 상태로 언제든지 갈 수 있는 상태

 일시정지

 BLOCKED

 사용하고자 하는 객체의 락이 풀릴 때까지 기다리는 상태

 WAITING

 다른 스레드가 통지할 때까지 기다리는 상태

 TIMED_WAITING

 주어진 시간 동안 기다리는 상태   ->  sleep(시간)

 종료

 TERMINATED

 실행을 마친 상태


* 이때, 한번 종료된 스레드는 재사용이 불가능하다. 따라서, 재사용하고 싶다면 생성 후 start()메소드를 통해 실행 대기 상태로 만들어 주어야 한다.

  


본 포스팅은 이것이 자바다 책을 참고하여 작성하였습니다.

'Java 공부' 카테고리의 다른 글

12장 스레드 상태 제어(2)  (0) 2018.12.07
12장 스레드 상태 제어(1)  (0) 2018.12.03
12장 동기화 메소드와 동기화 블록  (0) 2018.12.02
12장 스레드 우선순위  (0) 2018.12.02
12장 작업 스레드 생성과 실행  (0) 2018.12.02