首页 > 什么是连接池

什么是连接池

看了很多相关的文章,都写得太具体了,直接讲JAVA代码……希望大侠们能从概念上讲解一下


不好意思有点儿晕,怎么解释都感觉解释不通……求大神答疑


不使用连接池:每次Http请求都会执行建立连接(tcp协议的3次握手),发送收取数据,然后断开连接
使用连接池:第一次Http请求会建立连接,发送收取数据,然后不断开连接,将这个连接(底层的端口,线程,Socket等等的资源)保存起来,于是下次请求的时候可以重复使用……

连接池维护有两点,服务端通常默认会有一个连接超时的时间设置,客户端……就是你自己的代码控制的了。

上代码,安卓的org.apache.http.client.HttpClient

你可以认为,所谓的连接池其实就是对HttpClient的优化设置(保存连接而不是立刻断开)。

另外,安卓官方推荐使用java.net.HttpURLConnection

这种看似没有什么连接池的问题,其实是因为这个类的连接池是安卓官方实现的系统级的连接池。
好处就是不同的App应用可以共用连接池,还有省电什么的,坏处的话……我自己实测比HttpClient要慢。

UPDATE:
好吧,其实你的困惑貌似在于对Http协议的误解。
个人理解:
Http协议是一个ASCII编码的文本协议,请求头和请求主体之间用的换行符分割的,请求结束是使用Content-Length判断字节长度的。
Tcp协议是一个Byte级的协议,就比如你玩LOL,不是发个消息就断开连接了然后重新连接到服务器的……TCP有自己的连接包,断开包……
所以……
可以在同一个Tcp连接上(使用同一个Socket,同样的端口,同一个线程)执行多次Http请求……
所以……
才会有连接池这种节省资源提升效率的玩意儿。

UPDATE:
天哪,你不会是想说数据库JDBC的那种什么连接池吧=。=


连接池是维护了一堆长连接,在你需要的时候拿一个来用就行了,用完之后也不需要断开,把它还到池里,所以节省了建立SOCKET的时间

然后,在客户端维护

【热门文章】
【热门文章】