ThreadError
ThreadError (스레드 연산 오류 예외)
ThreadError는 스레드에 유효하지 않은 연산을 시도했을 때 던져지는 예외예요. 예를 들어 다른 스레드가 하나도 없는 상태에서 현재 스레드를 멈추려 하면,
Thread.stop
이런 예외가 올라와요.
ThreadError: stopping only thread
note: use sleep to stop forever
출처: Ruby 4.0 API
본문
메시지가 잘 알려주듯이, 유일하게 남은 스레드를 Thread.stop으로 멈추려 하면 어차피 깨워줄 대상이 없으니 오류가 나요. 실행 중인 스레드가 하나뿐일 때는 멈추려면 Thread.stop 대신 sleep을 쓰라는 게 핵심이에요. 잠들어도 다른 스레드에 의해 깨어날 수 있는 stop과 달리 sleep은 시간이 지나 스스로 깨어날 수 있는 방식이죠.