목차
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코어를 하나만 사용하여 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
Multithreading — threads and processes, time-slicing algorithm
Threads and Processes
java-jedi.medium.com
'Programming > Process & Multi Threading' 카테고리의 다른 글
[Java] 스레드와 메모리구조 그리고 프로세스(Process)의 구조 (0) | 2023.12.16 |
---|---|
[Java] 스레드의 우선순위(Thread Priority) (0) | 2023.12.15 |
[Java] Main Thread(메인 스레드)와 Worker Thread(작업 스레드) 그리고 Daemon Thread(데몬 스레드) (0) | 2023.12.13 |
[Java] Runnable 인터페이스와 Thread 클래스 (1) | 2023.12.11 |
[Java] 프로세스와 스레드 비교(프로세스/스레드, 싱글/멀티 스레드) (0) | 2023.12.09 |