본문으로 바로가기

Thread Life Cycle (생명 주기)

category Java언어 2018. 8. 16. 18:52

1. New 상태 

Thread task = new Task_thread();
 
작업 Thread 객체를 생성한 상태
NEW 상태의 Thread는 Scheduling되지 않는다. 
 
스케쥴링 : JVM이 Runnable상태인 Thread 중 하나를 선택해 실행시키는 과정이다.
cs

 


2.  Runnable 상태

task.start();
 
생성 된 thread가 start() method를 호출한 
해당 thread는 Scheduling 될 수 있는 Runnable 상태(실행 대기 상태)가 된다.
cs

 


3. Running 상태

Scheduler에 의해 Scheduling된 상태 

Runnable 상태에서 Running  상태로 변경

실행 상태


3.  Blocked 상태

실행 중인 thread가 I/O(입 출력) 작업에 들어가게 되면 해당 thread는 JVM에 의해 즉각 중지되며 Blocked 상태 된다.

BLOCK 상태의 thread는 I/O 작업이 완료 될 때까지 Scheduling 되지 않고 대기 한다.

I/O 작업이 완료되면 thread는 자동으로 Runnable  상태가 된다.

 

4. WAITING 상태

task.yield();
 
Thread가 yield() method를 호출한 상태
다른 thread에게 우선 순위를 양보
실행중인 스레드는 즉각 RUNNALBE상태가 된다.
 
cs

 

5.  TIMED_WATTING 상태

task.sleep(2000);
 
Thread가 sleep(millis) method를 호출한 상태
주어진 시간 동안 대기
단위는 밀리초
millis 밀리초 후 깨어나 RUNNABLE 상태가 된다.
 
cs


 

6. TEMINATED상태

run() method가 완료되어 thread가 종료된 상태

더 이상 RUNNABLE 상태로 되돌아 올 수 없다.

 

'Java언어' 카테고리의 다른 글

추상 클래스와 인터페이스의 차이  (0) 2018.08.16
Data Type(기본형,참조형)의 종류와 Size  (1) 2018.08.16
Thread 생성방법  (0) 2018.08.16
Thread란?  (1) 2018.08.16
OOP 란?  (0) 2018.08.16