国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Apache HttpClient源碼分析之連接池

YFan / 2966人閱讀

摘要:對連接數的管理則有兩個維度,分別是全局最大數和單最大數。當請求一個連接時,會返回。而會維護與及存活時間等。最終用戶得到的是里封裝而成的連接對象。連接數達到閾值時對請求進行堵塞,并且將放入。

上圖時連接池類圖關系。
PoolingHttpConnectionManager:就是我們通常所說的連接池
CPool:實際池化連接保持者
RouteSpecificPool:與Route關聯的連接池

說明:
CPool與RouteSpecificPool里的連接均分為三種–available, leased和pending,分別對應空閑,占用和堵塞三種狀態,連接池為這三種狀態建立三個列表(List/Set)。CPool對連接數的管理則有兩個維度,分別是全局最大數和單route最大數。CPool維護著route與RouteSpecificPool的關系。操作連接時,會先通過RouteSpecificPool進行操作,然后對CPool上進行操作。當PoolingHttpConnectionManager請求一個連接時,CPool會返回Future。而CPoolEntry會維護ManagedHttpClientConnection與HttpRoute及存活時間等。最終用戶得到的是PoolingHttpConnectionManager里封裝而成的連接對象CPoolProxy
連接獲取請求在沒有空閑連接但連接數沒達到閾值時通過連接池創建連接并池化放入available或者leased。leased連接數達到閾值時對請求進行堵塞,并且將Future放入pending。其他請求釋放連接時會喚醒堵塞請求,被喚醒的請求獲取到連接后會被從pending列表中移除。

獲取連接

釋放連接

HttpResponse用HttpResponseProxy封裝,HttpResponseProxy同時包含了ConnectionHolder
HttpResponseProxy內部會使用ResponseEntityProxy對HttpResponse及其entity作進一步封裝,封裝中包含ConnectionHolder,以便在調用releaseConnection,或者關閉entity關閉流時可以釋放連接到池中或不可復用時直接關閉。實際上當我們調用entity.getContent時,返回的是EofSensorInputStream裝飾過的InputStream,在stream close時里面會回調ResponseEntityProxy(實現了EofSensorWatcher)的streamClosed方法,從而調用connHolder.releaseConnection();實現連接的釋放。

參考:
http://hc.apache.org/ 文檔及源碼
http://blog.csdn.net/szwandcj...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70742.html

相關文章

  • Http請求連接-HttpClient的AbstractConnPool源碼分析

    摘要:若使用連接池的方式,來管理連接對象,能極大地提高服務的吞吐量。另外每個對應一個連接池,實現了在級別的隔離,若下游的某臺提供服務的主機掛了,無效的連接最多只占用該對應的連接池,不會占用整個連接池,從而拖垮整個服務。 背景 在做服務化拆分的時候,若不是性能要求特別高的場景,我們一般對外暴露Http服務。Spring里提供了一個模板類RestTemplate,通過配置RestTemplate...

    gself 評論0 收藏0
  • Android網絡編程2HttpUrlConnection和HttpClient

    摘要:壓縮和緩存機制可以有效地減少網絡訪問的流量,在提升速度和省電方面也起到了較大的作用。打開來分析一下,不了解和協議原理的請查看網絡編程一協議原理這篇文章。當然這次錯誤是正常的,百度沒理由處理我們的這次請求。 前言 上一篇我們了解了HTTP協議原理,這一篇我們來講講Apache的HttpClient和Java的HttpURLConnection,這兩種都是我們平常請求網絡會用到的。無論我們...

    cfanr 評論0 收藏0
  • dubbo源碼解析(二十六)遠程調用——http協議

    摘要:前言基于表單的遠程調用協議,采用的實現,關于協議就不用多說了吧。后記該部分相關的源碼解析地址該文章講解了遠程調用中關于協議的部分,內容比較簡單,可以參考著官方文檔了解一下。 遠程調用——http協議 目標:介紹遠程調用中跟http協議相關的設計和實現,介紹dubbo-rpc-http的源碼。 前言 基于HTTP表單的遠程調用協議,采用 Spring 的HttpInvoker實現,關于h...

    xiyang 評論0 收藏0
  • 淺析 jdk11 中 HttpClient 的使用

    摘要:在中也可以直接使用返回的是,然后通過來獲取結果阻塞線程,從中獲取結果四一點嘮叨非常的年輕,網絡資料不多,且代碼非常精細和復雜,目前來看底層應該是使用了線程池搭配進行異步通訊。 零 前期準備 0 版本 JDK 版本 : OpenJDK 11.0.1 IDE : idea 2018.3 1 HttpClient 簡介 java.net.http.HttpClient 是 jdk11 中正式...

    Eminjannn 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<