org.apache.http.impl.conn.PoolingHttpClientConnectionManager
org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager
这两种类型有什么区别? 哪一个在多线程环境中更可靠?
由于
答案 0 :(得分:2)
这两种类型有什么区别?
PoolingHttpClientConnectionManager
维护一个HttpClientConnection
池,提供同步/阻止通信。
PoolingNHttpClientConnectionManager
维护一个NHttpClientConnection
池,提供异步/非阻塞和事件驱动的通信。
哪一个在多线程环境中更可靠?
这两种类型都注明了@Contract
,其中有一个元素表示threading behavior enforced at runtime。
PoolingHttpClientConnectionManager
注释为@Contract(threading=SAFE_CONDITIONAL)
,表示它是线程安全的,如果在构造时注入的依赖项是线程安全的。
PoolingNHttpClientConnectionManager
使用@Contract(threading=SAFE)
进行注释,因此可以将其视为完全线程安全的。