为什么要使用setConnectionTimeout和SetReadTimeout?

为什么要给URLConnection对象使用setConnectionTimeout和SetReadTimeout?

比如setConnectionTimeout会在读取超过设置的时间的情况下报错,我不设置又有啥关系?会出线啥问题呢?使用这两个方法主要是为什么考虑呢?

不设超时就会在那里死等,前台没有任何反应了。

太长的时间当无法连接的时候会导致程序挂起等待很久,影响用户体验。太短的超时在网速较低但是服务器工作正常的情况下造成无法访问。所以需要根据需要自己设置。

处于更好的用户体验,傻等半天没有反应岂不是很无聊。

@苏小喵 他的回答是对的,通常都需要设置的。

一个是连接超时,一个是连接后等待响应超时
1.避免让用户等待过长,影响体验。一般作为客户端连接服务端时,都会设置这两个超时。
2.不设置合理的超时会产生性能问题,尤其大并发的服务器上,万一出现N多线程都等待的情况(默认大概是30秒),非常容易出现线程阻塞以及资源不足,无法提供服务。

线程阻塞,造成系统挂掉,用户体验不好造成用户流失。

你不设置没有关系,会使用系统默认值。

可能出现的问题,就是网络比较慢的情况下,一直超时,无法完成请求。
设置时要考虑的是,你能接受多久的超时,用户能等待多久。

主要还是避免客户端卡死过久,程序里面可以捕获到超时异常,然后显示"系统正忙,请稍后再试",这样体验会好很多

可以理解成连接池。如果设置了连接超时,到时间自动帮你关掉,可以保证即时清理掉不用的连接,新建连接时可正常连接。

肯定要设置的,亲身体验,只设置了ConnectionTimeout没有设置ReadTimeout,结果导致线程卡死。