スレッドがソケットのInputStream
からの入力でブロックしている間に中断された場合、そのソケットのリソース(例えばローカルポート)は解放されますか?ブロックされているスレッドを中断してソケットからの入力を待っている
ソケットには、SoTimeout
というオプションがあります。 SoTimeout
オプションを設定した場合、タイムアウトの期限が切れたときにソケットが解放されるようにバインドされているポートはありますか?
スレッドがソケットのInputStream
からの入力でブロックしている間に中断された場合、そのソケットのリソース(例えばローカルポート)は解放されますか?ブロックされているスレッドを中断してソケットからの入力を待っている
ソケットには、SoTimeout
というオプションがあります。 SoTimeout
オプションを設定した場合、タイムアウトの期限が切れたときにソケットが解放されるようにバインドされているポートはありますか?
Thread.interrupt()
がおろかが、その場合には意味がはっきりClosedByInterruptException
がスローされていることを文書化され、それがInterruptibleChannel
あるない限り、ソケットを閉じて、全く読んが中断されると言うものはありませんチャネルは閉じられています。
ソケットタイムアウトを設定してSocketTimeoutException
を取得した場合、ソケットは開いたままです。そのリソースは解放されません(ポートを含む)。つまり、Socketが閉じられるまで、新しいSocketをそのポートにバインドすることはできません。
タイムアウト自体はSocketを閉じることも、ポートをバインド解除することもありません。これを達成するにはsocket.close()
に電話する必要があります。
例外をキャッチしたときのコードの内容 –