正如 Java Concurrency In Practice 中所述:
不幸的是,InputStream中的读写方法 OutputStream不响应中断,但关闭 底层套接字使得任何线程在读取或阻塞时被阻止 写抛出一个SocketException
所以,我的问题是,假设Thread
方法中的本地方法socketRead0()
阻止了一个SocketInputStream.read()
,如果相关的Socket已关闭(通过调用close()
),阻止线程会立即收到SocketException
吗?
或者在达到套接字读取超时之前什么都不会发生?
答案 0 :(得分:2)
假设在
socketRead0()
方法中的本机方法SocketInputStream.read()
中阻止了一个线程,如果相关Socket
已关闭(通过调用close()
),则阻塞的线程会收到{ {1}}马上?
是
或者在达到套接字读取超时之前什么都不会发生?
立竿见影。等待超时是没有意义的。