[ 그림 1 ]
이전에 정리했던 프로세스 라이프사이클 을 간단히 정리하면 [ 그림 1 ] 과 같다. 일반적으로 OS CPU 스케줄링 실행 단위를 스레드라고 볼 수 있는데, 자바 스레드의 라이프사이클 역시 위 구조를 따르고 있을지 한 번 알아보자.
[ 그림 2 ]
[ 그림 2 ] 를 통해 알 수 있듯이 자바의 스레드의 라이프사이클이 큰 틀에서는 [ 그림 1 ] 과 유사한 것을 확인할 수 있다. 몇 가지 다른 특징들을 정리해보면 다음과 같다.
Runnable: 자바 스레드에서는 Ready, Running 상태를 구분하지 않고, 실행 (가능) 상태인 Runnable 상태를 가진다.TIMED_WAITING: 대기 상태를 의미하는WAITING뿐만 아니라 일정 시간 제한이 있는TIMED_WAITING상태를 가진다.WAITING과 달리 주어진 시간이 초과하는 경우 이 상태에서 벗어난다.Blocked: 스레드가 락 (자바 모니터 락)을 얻기 위해 대기하는 상태를 의미한다. 예를 들어,synchronized블록 안으로 진입할 때 이미 다른 스레드가 락을 점유하고 있어 대기할 때 이 상태에 들어간다.
자바 스레드의 상태 및 트랜지션은 앞으로 다룰 interrupt, synchronized, 생산자-소비자 문제 등을 다루면서 자세히 확인해볼 예정이다.