Thread State(Thread 상태)
Thread State(Thread 상태)
-
Thread의 상태
- NEW
- Thread가 생성되었지만 아직 start()가 호출되지 않은 상태- RUNNABLE - Thread가 실행중이거나 실행대기중인 상태 - BLOCKED - 동기화 블럭에 의해 일시정지된 상태 (Lock이 풀릴 때 까지 기다리는 상태) - WAITING - THREAD의 작업이 종료되지 않았지만 대기중인 상태, 즉 실행불가능(UNRUNNABLE)한 상태 - TIMED-WAITING - WAITING상태와 동일한 상태, 하지만 대기시간이 정해져 있음 - TERMINATED - Thread가 작업을 종료된 상태
-
[Sample Code]
public class T10_ThreadStateTest { public static void main(String[] args) { statePrintThread spt = new statePrintThread(new TargetThread()); spt.start(); } } class TargetThread extends Thread { @Override public void run() { for(long i=1; i<10000000000L; i++) { // 시간지연 loop // RUNNABLE } try { Thread.sleep(1500); // TIMED_WAITING } catch(InterruptedException e) { e.printStackTrace(); } for(long i=1; i<1000000000L; i++) { // 시간지연 loop } } } /** * Thread의 상태를 출력하기 위한 변수 */ class statePrintThread extends Thread { private Thread targetThread; // 상태출력용 Thread를 저장할 변수 public statePrintThread(Thread targetThread) { this.targetThread = targetThread; } @Override public void run() { while(true) { Thread.State state = targetThread.getState(); System.out.println("Current Status : " + state); if(state == Thread.State.NEW) { // State가 NEW이면 Thread를 실행함 targetThread.start(); } if(state == Thread.State.TERMINATED) { // Thread가 소멸되면 반복문을 종료함 break; } try { Thread.sleep(500); } catch(InterruptedException e) { e.printStackTrace(); } } } }
출력결과
Current Status : NEW Current Status : RUNNABLE Current Status : RUNNABLE Current Status : RUNNABLE Current Status : RUNNABLE Current Status : TIMED_WAITING Current Status : TIMED_WAITING Current Status : TIMED_WAITING Current Status : TERMINATED
Thread state
, Thread life Cycle
등으로 검색하면 Thread의 상태에 대해 더욱 자세히 알 수 있다.
현재 예제에서는 BLOCKED과 WAITING이 나와있지 않은데, WAITING은 TIMED_WAITING에서 대기시간을 지정해주지 않으면 WAITING이 된다.
BLOCKED는 추후에 동기화 블럭을 사용하는 예제에서 더욱 자세히 알아볼 예정이다.
Author And Source
이 문제에 관하여(Thread State(Thread 상태)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ovan/Thread-StateThread저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)