본문 바로가기

개발 언어 및 알고리즘 기초/JAVA 기초

[JAVA] Thread 상태

자바 공부 중 스레드 상태에 대한 내용을 자꾸 까먹게 되어 정리한 것에 대한 기록이다. 아래 책을 공부 중이다.

신용권, 임경균, 『이것이 자바다』, 한빛미디어(2023), p120-121.

 


 1. Thread 상태의 3단계 

 아래 그림과 같이 Thread는 크게 3가지 상태를 가진다. 첫 번째는 스레드 객체가 새로 생성되는 객체 생성 단계이고, 두 번째는 실행을 기다리고 있는 상태인 실행 대기 상태이다. 실행 대기 중인 스레드들은 CPU 스케쥴링에 따라서 실행상태 <-> 실행대기상태를 반복하다가 일시정지가 되기도 하고 다시 실행 대기 상태가 되기도 한다. 이후 run() 메서드가 종료되어 더 이상 실행할 코드가 없으면 종료 상태에 도달하게 된다. 


 Thread 객체 생성 
 [ NEW ] 
   실행 대기 
 [ RUNNABLE ] 
   종료 
 [ TERMINATED ] 
  일시정지  
     ㅣ__ __   실행   __ __                  __ __   

 


 

 

 2. 일시정지를 위한 메소드 

--> 일시 정지 Thread.sleep(long milis)  
Object.join() join() 메소드를 호출한 스레드가 일시정지 상태로. join() 메소드를 가진 스레드가 종료되면 다시 실행 대기 상태로.
(ex. main thread에서 threadA.join()을 호출하면 threadA가 종료될 때까지 main thread는 일시정지 상태)
Object.wait()  
일시 정지 --> Thread.interrupt() [-> 실행대기 / 종료], thread 안전 종료에 이용
Object.notify()
Object.notifyAll()
[wait() 일시정지 -> 실행 대기]
실행 --> 실행 대기 Thread.yield()  

 

728x90