CS

[OS] Thread 상태 제어

wahu 2020. 3. 3. 16:27

스레드 상태 변화

 

1) 처음 생성 시 실행 대기 상태

2) CPU 스케줄러에 의해 선택되면 실행 됨

3) 시간 할당량이 끝나면 실행 대기 상태로 감. 시간 할당량이 끝나기 전 yield() 메서드를 호출하면 실행 대기로 만들 수 있음

4) 스레드가 실행 상태이면

sleep() 메서드를 호출하게 되면 주어진 시간동안 일시정지 상태가 되고, 시간이 지나면 실행 대기가 됨

join() 메서드를 호출하게 되면, 해당 메서드를 호출 한 스레드가 종료 될 때까지 일시 정지 되었다가 실행 대기 상태로 이동

wait() 메서드를 호출하게 되면 일시 정지가 됨. 하지만 다른 스레드가 notify(), notifyAll()을 호출해주어야 실행 대기로 갈 수 있음

5) 일시 정지 상태이면

interrupty() 메서드가 호출 되면, 예외가 발생하면서 실행 대기 상태로 갈 수 있음

6) 실행 중이면

stop()을 호출하여 스레드를 종료 시킬 수 있다. 하지만 Deprecated 됨

 

 

참고

https://ict-nroo.tistory.com/41