考虑以下代码段:
URLConnection connection = target.openConnection(); connection.setConnectTimeout(5000); // 5 sec connection.setReadTimeout(10000); // 10 sec
这些connection.setReadTimeout设置是设置可用于开始读取数据的最大时间,还是设置可用于完成读取数据的最大时间?
connection.setReadTimeout
我的理解是,Java有10秒的时间开始从连接中读取下一个数据字节。由于我们不知道strean的大小,因此从连接中读取所有数据没有超时的限制。这是正确的吗?
根据oracle docs,如果在读取超时期间没有可用数据,则可以引发异常
如果读取超时在可读取数据之前到期,则从返回的输入流进行读取时会抛出SocketTimeoutException。