该JavaDoc的解释非常好:
通过将此选项设置为非零超时,与此套接字关联的InputStream上的read()调用将仅在此时间量内阻塞。如果超时到期,则尽管Socket仍然有效,但将引发java.net.SocketTimeoutException。必须先启用该选项,然后才能执行阻止操作。超时必须大于0。零超时被解释为无限超时。
SO_TIMEOUT是
read()通话将被阻止的超时时间。如果达到超时,将抛出java.net.SocketTimeoutException。如果要永久阻止,请将此选项设置为零(默认值),则
read()调用将一直阻止,直到可以读取至少1个字节为止。



