sleep과 같은 메서드를 받아서 대기 중인 상태의 스레드를 강제로 깨울 수 있게 하는 것이다.
스레드.inturrupt()로 인터럽트를 일으킬 수 있으며, InterruptException을 만나야지만 작동된다.
예외 처리가 된 순간 인터럽트는 풀리고 스레드는 runnable 상태가 된다.
인터럽트인지 아닌지 확인할 수 있는 메서드는 isInterrupted()다.
interrupted()
스레드가 현재 인터럽트 상태이면 true를 반환함과 동시에 즉시 인터럽트를 해제시키고, 반대로 인터럽트 상태가 아니면 그냥 false를 반환한다.
이는 인터럽트 상태가 계속 유지되면 자원 정리 같은 후속 작업 중에 인터럽트가 걸려 실패하게 될 수도 있다. 그래서 이러한 메서드가 필요한 것이다.
하지만 그렇다고 항상 좋은 것만은 아니다. 자원 정리 없이 바로 끝내야 할 때는 인터럽트가 계속 유지되는 게 더 낫다.