Programming/Process & Multi Threading

[Java] 스레드의 생명주기(Thread lifecycle, Runnable/Running의 차이점 )

dev.pudding 2023. 12. 10. 12:38
728x90
목차 
1.스레드 생명주기(Thread lifecycle)
2.Runnable/Running 의 차이점 

 

1. 스레드 생명주기(Thread lifecycle)

 

스레드는 New, Active(Runnable/Running),Blocked/Waiting,Terminated 의 단계로 구성되어있다.

  • New
    Thread 인스턴스만 부른 상태이며 아직 스레드를 사용하지 않은 상태 (start() 메소드를 사용하기 전의 상태)
  • Active(Runnable/Running) 
    실행 가능하거나 실행중인 상태  (start()메소드를 부른 상태)
  • Blocked/Waiting
    일시 정지된 스레드 상태( join(),sleep(),wait() 메소드를 사용한 상태 )
    참고로 CPU에서는 waiting 상태의 스레드를 실행시키지 않으며 CPU 사이클을 소비하지 않음
  • Terminated
    스레드 종료 상태

 

 2.Runnable/Running 의 차이점 

멀티스레드 실행방법 (CPU코어를 하나만 사용할 때)

그림예시는 스레드를 실행시킬 때 CPU코어를 하나만 사용하여 Thread1과 Thread2를 실행시키는 방법이다. 스레드 각각 시간이 쪼개서 사용되고 있다.  이 때 실행중인 스레드를 Running 상태라고 하며, 잠깐 대기중인 상태를 Runnable이라고 한다. 

참고로 Runnable 상태는 CPU 스케줄러에 의해 관리된다. 개발자가 임의로 스레드 실행을 대기시킨 상태는 blocked/waiting 상태이다.

 

 

* 위의 예시는 시분할알고리즘으로 실행되고 있는데 관련 글은  지난 포스트에 정리해두었다. 

https://bytepudding.tistory.com/2

 

[Java] 프로세스와 스레드 비교(프로세스/스레드, 싱글/멀티 스레드)

목차 1. 프로세스(Process)와 스레드(Thread) 2. 싱글스레드의 프로세스 3. 멀티스레드의 프로세스 싱글스레드(Single Thread)와 멀티 스레드(Multi Thread)의 차이점을 이해하기 위해서는 프로세스와 스레드

bytepudding.tistory.com


출처 

https://medium.com/swlh/thread-life-cycle-java-4d5682eedf7d

 

Thread Life Cycle — Java

“All you need to know about java thread life cycle!”

medium.com

https://java-jedi.medium.com/multithreading-threads-and-processes-time-slicing-algorithm-547be0732b5f

 

Multithreading — threads and processes, time-slicing algorithm

Threads and Processes

java-jedi.medium.com