IllegalThreadStateException — 스레드 상태가 요청 연산에 어울리지 않을 때
IllegalThreadStateException — 스레드 상태가 요청 연산에 어울리지 않을 때
IllegalThreadStateException은 스레드가 요청한 연산을 수행하기에 적절한 상태가 아닐 때 던져지는 예외예요. 예를 들어 이미 start()를 호출해 실행 중인 스레드를 다시 시작하려 하면 이 예외가 나와요.
본문
스레드는 NEW, RUNNABLE, TERMINATED 같은 수명 주기 상태를 가져요. 이 상태가 특정 연산을 허용하지 않는데 그 연산을 시도하면 이 예외를 던지는 방식이에요. 대표적인 예가 Thread.start()를 두 번 호출하는 경우예요 — 한 번 시작된 스레드는 다시 시작할 수 없으니까요.
상속 구조는 다음과 같아요.
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.lang.IllegalArgumentException
java.lang.IllegalThreadStateException
IllegalArgumentException의 하위 클래스라는 점이 흥미로운데, "잘못된 인자를 넘겼다"는 넓은 의미의 예외에 스레드 상태 관련 특수한 경우가 포함되기 때문이에요.
생성자
IllegalThreadStateException()— 상세 메시지 없이 생성해요.IllegalThreadStateException(String s)— 지정된 상세 메시지로 생성해요.
관련 API로는 Thread.start()가 있어요.