PoolingHttpClientConnectionManager与PoolingNHttpClientConnectionManager

时间:2017-09-14 10:51:16

标签: java http connection-pooling

org.apache.http.impl.conn.PoolingHttpClientConnectionManager org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager

这两种类型有什么区别? 哪一个在多线程环境中更可靠?

由于

1 个答案:

答案 0 :(得分:2)

  

这两种类型有什么区别?

PoolingHttpClientConnectionManager维护一个HttpClientConnection池,提供同步/阻止通信。

PoolingNHttpClientConnectionManager维护一个NHttpClientConnection池,提供异步/非阻塞和事件驱动的通信。

  

哪一个在多线程环境中更可靠?

这两种类型都注明了@Contract,其中有一个元素表示threading behavior enforced at runtime

PoolingHttpClientConnectionManager注释为@Contract(threading=SAFE_CONDITIONAL),表示它是线程安全的,如果在构造时注入的依赖项是线程安全的。

PoolingNHttpClientConnectionManager使用@Contract(threading=SAFE)进行注释,因此可以将其视为完全线程安全的。