Java언어
Thread Life Cycle (생명 주기)
성욱박
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 상태로 되돌아 올 수 없다.