当调用Socket.close()时,socketRead0()中的Thread是否会被抛出SocketException?

时间:2016-07-04 06:51:44

标签: java sockets

正如 Java Concurrency In Practice 中所述:

  

不幸的是,InputStream中的读写方法   OutputStream不响应中断,但关闭   底层套接字使得任何线程在读取或阻塞时被阻止   写抛出一个SocketException

所以,我的问题是,假设Thread方法中的本地方法socketRead0()阻止了一个SocketInputStream.read(),如果相关的Socket已关闭(通过调用close()),阻止线程会立即收到SocketException吗?

或者在达到套接字读取超时之前什么都不会发生?

1 个答案:

答案 0 :(得分:2)

  

假设在socketRead0()方法中的本机方法SocketInputStream.read()中阻止了一个线程,如果相关Socket已关闭(通过调用close()),则阻塞的线程会收到{ {1}}马上?

  

或者在达到套接字读取超时之前什么都不会发生?

立竿见影。等待超时是没有意义的。