스레드가 소켓의 InputStream
에서 입력을 차단하는 동안 인터럽트되면 소켓 (예 : 로컬 포트)의 리소스가 해제됩니까?차단 된 스레드 인터럽트 소켓에서 입력 대기 중
소켓에 SoTimeout
이라는 옵션이 있다는 것을 알고 있습니다. SoTimeout
옵션을 설정하면 제한 시간이 만료 될 때 소켓이 해제되도록 포트가 바인딩됩니까?
스레드가 소켓의 InputStream
에서 입력을 차단하는 동안 인터럽트되면 소켓 (예 : 로컬 포트)의 리소스가 해제됩니까?차단 된 스레드 인터럽트 소켓에서 입력 대기 중
소켓에 SoTimeout
이라는 옵션이 있다는 것을 알고 있습니다. SoTimeout
옵션을 설정하면 제한 시간이 만료 될 때 소켓이 해제되도록 포트가 바인딩됩니까?
Thread.interrupt()
이 커녕 어떤 경우에 의미가 명확하게 ClosedByInterruptException
가 발생되는 것을 문서화, 그것이 InterruptibleChannel
입니다 하지 않는 소켓을 닫습니다, 전혀 읽을 이 중단 될 말한다 아무것도 없다 채널이 닫힙니다.
소켓 시간 제한을 설정하고 SocketTimeoutException
이되면 소켓이 열린 상태로 유지됩니다. 그것의 자원을 발표하지 않습니다 (포트 포함). 소켓이 닫힐 때까지 새로운 소켓을 그 포트에 바인드 할 수 없습니다.
시간 초과 자체가 Socket을 닫지 않고 포트를 바인딩 해제하지 않습니다. 이를 수행하려면 socket.close()
으로 전화해야합니다.
예외를 잡을 때 코드가 수행하는 작업에 따라 다릅니다. –