2 samuwoo samuwoo 于 2015.05.26 11:44 提问

为什么要使用setConnectionTimeout和SetReadTimeout?

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

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

9个回答

devmiao
devmiao   Ds   Rxr 2015.05.26 11:55

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

Tiger_Zhao
Tiger_Zhao   Rxr 2015.05.26 11:52

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

tongyi55555
tongyi55555   2015.05.26 11:56

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

wgw335363240
wgw335363240   2015.05.26 17:40

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

fanst_
fanst_   2015.05.26 22:51

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

z345434645
z345434645   2015.05.27 07:58

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

sirnuo
sirnuo   2015.05.27 10:24

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

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

edouardzyc
edouardzyc   2015.05.27 10:35

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

wutiandengdai
wutiandengdai   2015.05.28 23:31

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

Csdn user default icon
上传中...
上传图片
插入图片