如果我从未使用ThreadSafeClientConnManager调用closeExpiredConnections,会发生什么

时间:2012-01-20 15:18:52

标签: java multithreading httpclient

我在java应用程序中使用ThreadSafeClientConnManager进行多线程处理。我的ThreadSafeClientConnManager对象是静态的,因此它在应用程序运行之前一直存在。

如果我从不致电closeExpiredConnections()closeIdleConnections()会怎样?

从长远来看,它会使我的应用程序崩溃吗?

1 个答案:

答案 0 :(得分:0)

以下假设您使用httpcmponents-client 4.1.2,这是当前的GA。

从代码和javadocs来看,没有什么不好的事情会发生。 ThreadSafeClientConnManager有合理的限制。如果您没有向上更改限制,最终池将填满,旧连接将被踢出。

一个缺点是你要保持空闲和过期的连接,它保存资源(文件句柄)和不需要的对象。但同样,如果你没有更改默认值,那么与可用内容相比,这些资源的数量很小:在Linux系统上总共有1000个文件句柄可用。

简而言之:这不会让应用程序崩溃。

PS这些库有可用的源代码,您应该亲自了解后果是什么。