4-2.(5) Thread의 상태
Thread의 상태
(1) NEW : 스레드가 생성되고 아직 start()가 호출되지 않은 상태
(2) RUNNABLE : 실행 중 또는 실행 가능한 상태
(3) BLOCKED : 동기화 블럭에 의해서 일시정지된 상태(lock이 풀릴때까지 기다리는 상태)
(4) WATTING, TIMED_WAITING : 스레드의 작업이 종료되지는 않았지만 실행가능하지 않은(UNRUNNABLE)일시정지 상태. TIMED_WAITING은 일시정지 시간이 지정된 경우임.
(5) TERMINATED : 스레드의 작업이 종료된 상태
Thread.class 안에 존재함
public enum State {
	NEW,
    	RUNNABLE,
    	BLOCKED,
    	WAITING,
	TIMED_WAITING,
    	TERMINATED;
}T10_ThreadStateTest
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<=1000000000L;i++) {} //시간 지연용
		try {
			Thread.sleep(1500);//1.5초
		}catch(InterruptedException ex) {
			ex.printStackTrace();
		}
		for(long i=1; i<1000000000L; i++) {}//시간 지연용
	}
}쓰레드의 상태를 출력하기 위한 쓰레드
- 1.상태를 출력할 쓰레드가 저장될 변수 필요
- 2.Thread의 상태 구하기 : getState()메서드 이용
- 3.new상태인지(new 상태면 start();)
 terminated상태인지(종료 상태면 break; -> 무한루프 빠져나오기)
 검사!
class StatePrintThread extends Thread{
	private Thread targetThread; // 상태를 출력할 쓰레드가 저장될 변수
	
	public StatePrintThread(Thread targetThread) {
		this.targetThread = targetThread;
	}
	
	@Override
	public void run() {
		while(true) {
			//Thread의 상태 구하기(getState()메서드 이용) -> public enum State {}
			Thread.State state = targetThread.getState();
			System.out.println("타겟 쓰레드의 상태값 : "+ state);
			
			//new상태인지 검사
			if(state == Thread.State.NEW) { // -> Runnable상태로 감
				targetThread.start();
			}
			
			//타겟쓰레드가 종료상태인지 검사
			if(state== Thread.State.TERMINATED) {
				break; // 무한루프 빠져나오기
			}
			
			try {
				Thread.sleep(500);//0.5초마다 getState 찍기
			}catch(InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}
Author And Source
이 문제에 관하여(4-2.(5) Thread의 상태), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@zhyun1220/4-2.5-Thread의-상태저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)