자바 라이브러리에 포함되어있는 여러 블러킹 메서드는 대부분 인터럽트 발생 즉시 InterruptedException을 던지며 리턴하지만, 모든 메서드가 그러는 건 아님. 다음의 작업들은 인터럽트를 걸어도 블러킹에서 깨어나오지 않음.
따라서 해당 스레드가 블러킹 되어있는 이유를 판단하여 작업을 중단해야함
InputStream.read()와 OutputStream.write() 메서드가 인터럽트에 반응하지 않는다.
해당 스트림이 연결된 소켓을 직접 닫아버리면 read와 write 메서드가 SocketException을 던지며 깨어남
InterruptibleChannel에서 대기하고 있는 스레드에 인터럽트를 걸면 ClosedByInterruptExcetion을 던지며 해당 채널이 닫힌다.
해당 채널에서 대기하고 있는 모든 스레드에 ClosedByInterruptExcetion가 발생한다.
스레드가 Selector.select() 메서드에서 블러킹 되어있는 경우, close 메서드를 호출하면 ClosedSelectorExcetpion을 던지며 깨어남
스레드가 암묵적인 락을 확보하기 위해 대기 상태에 들어가 있는 경우 락을 언제 확보할 지 알수 없을 뿐더러, 어찌 할 방법이 없다.
Lock 인터페이스를 사용하여 명시적인 락을 사용하면 인터럽트에 스레드가 깨어남