亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java?HttpURLConnection類的disconnect方法與http長(zhǎng)連接詳解

 更新時(shí)間:2024年04月29日 08:40:04   作者:苦蕎米  
這篇文章主要介紹了java?HttpURLConnection類的disconnect方法與http長(zhǎng)連接,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

disconnect方法

java 自帶的HttpURLConnection類有個(gè)關(guān)閉連接的方法disconnect(),是用于關(guān)閉http連接的,但是有一個(gè)問(wèn)題在于,http連接一直都是一次性的,不存在復(fù)用的可能性,所以當(dāng)輸入流和輸出流關(guān)閉后,http請(qǐng)求過(guò)程也就結(jié)束了,為什么還需要這個(gè)方法?

java代碼對(duì)該方法的說(shuō)明如下:并沒有提到關(guān)閉請(qǐng)求釋放資源的說(shuō)明,而是說(shuō)調(diào)用該方法意味著一段時(shí)間之內(nèi)不會(huì)再向目標(biāo)機(jī)器發(fā)起請(qǐng)求,并且又強(qiáng)調(diào)了一遍HttpURLConnection類是不可復(fù)用的。

看到這段描述,我就想到了該方法應(yīng)該是和長(zhǎng)連接有關(guān)的。

/**
* Indicates that other requests to the server
* are unlikely in the near future. Calling disconnect()
* should not imply that this HttpURLConnection
* instance can be reused for other requests.
*/
public abstract void disconnect();

http長(zhǎng)連接

在http1.1版本以及之后的相關(guān)版本中,connection默認(rèn)是keep-alive,意思即是在http請(qǐng)求結(jié)束后保持tcp連接不斷開以便下一次請(qǐng)求復(fù)用,也就是http長(zhǎng)連接,但是著要求請(qǐng)求放和服務(wù)端都支持,所以有理由懷疑disconnect()方法與http長(zhǎng)連接有關(guān),但是著需要驗(yàn)證。

http長(zhǎng)連接測(cè)試

為此搭建了一個(gè)簡(jiǎn)易spring boot項(xiàng)目作為測(cè)試,這里http協(xié)議使用是1.1版本,默認(rèn)保持長(zhǎng)連接模式。首先看一下正常的http請(qǐng)求過(guò)程中tcp連接狀態(tài)的變化。

注:因?yàn)榘l(fā)起請(qǐng)求的一方在請(qǐng)求結(jié)束后程序就關(guān)閉了,所以不管有沒有調(diào)用斷開連接的方法,tcp連接都會(huì)在程序結(jié)束后斷開。

在發(fā)起http請(qǐng)求后確立tcp連接,由于是本地調(diào)用,所以能看到有兩個(gè)tcp連接記錄,但是其實(shí)是同一個(gè)鏈接。

在程序結(jié)束后發(fā)起tcp請(qǐng)求的一方斷開了鏈接,接受的一方進(jìn)入了TIME_WAIT狀態(tài),這是防止丟包的準(zhǔn)備關(guān)閉連接的狀態(tài)。

然后在調(diào)用方加上了Thread.sleep()方法,讓調(diào)用方發(fā)起請(qǐng)求后程序不結(jié)束。

但是發(fā)現(xiàn)不管有沒有有執(zhí)行disconnect()方法,tpc連接的狀態(tài)都是一樣的,就是在http請(qǐng)求結(jié)束后的一段時(shí)間內(nèi),tcp連接依然是確認(rèn)狀態(tài),在持續(xù)數(shù)十秒后,tcp連接就關(guān)閉了,并沒有發(fā)現(xiàn)監(jiān)聽狀態(tài)。

結(jié)論

并沒有發(fā)現(xiàn)HttpURLConnection類的disconnect()方法在保持http長(zhǎng)連接中有任何作用(也有可能是spring boot服務(wù)需要專門設(shè)計(jì)才能支持長(zhǎng)連接),似乎該方法本身就沒有任何作用。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 5分鐘快速了解String.trim()到底做了什么事

    5分鐘快速了解String.trim()到底做了什么事

    trim方法一般用來(lái)去除空格,但是根據(jù)JDK API的說(shuō)明,該方法并不僅僅是去除空格,它能夠去除從編碼'\u0000'至'\u0020'的所有字符,這篇文章主要給大家介紹了如何通過(guò)5分鐘快速了解String.trim()到底做了什么事,需要的朋友可以參考下
    2021-11-11
  • MyBatis 參數(shù)映射機(jī)制實(shí)踐記錄

    MyBatis 參數(shù)映射機(jī)制實(shí)踐記錄

    這篇文章主要介紹了MyBatis 參數(shù)映射機(jī)制實(shí)踐記錄,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-12-12
  • Java遍歷Map的5種方式實(shí)例

    Java遍歷Map的5種方式實(shí)例

    Map作為Java中的一種集合,以鍵值對(duì)的形式存放一批數(shù)據(jù),經(jīng)常會(huì)被我們應(yīng)用在項(xiàng)目中,下面這篇文章主要給大家介紹了關(guān)于Java遍歷Map的5種方式,需要的朋友可以參考下
    2023-02-02
  • Java中反射的一個(gè)簡(jiǎn)單使用

    Java中反射的一個(gè)簡(jiǎn)單使用

    一直感覺Java的反射機(jī)制很強(qiáng)大,JAVA反射技術(shù)在平時(shí)我們的開發(fā)中雖然很少會(huì)用到,但在我們所使用的框架源碼中是經(jīng)常會(huì)用到的。這篇文中就給大家介紹了關(guān)于Java中反射的一個(gè)簡(jiǎn)單使用,有需要的朋友們下面來(lái)一起看看吧。
    2016-11-11
  • JAVA多線程之實(shí)現(xiàn)用戶任務(wù)排隊(duì)并預(yù)估排隊(duì)時(shí)長(zhǎng)

    JAVA多線程之實(shí)現(xiàn)用戶任務(wù)排隊(duì)并預(yù)估排隊(duì)時(shí)長(zhǎng)

    本文主要介紹了Java多線程之實(shí)現(xiàn)用戶任務(wù)排隊(duì)并預(yù)估排隊(duì)時(shí)長(zhǎng)的問(wèn)題,文中的代碼具有一定的學(xué)習(xí)和工作價(jià)值,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧
    2021-12-12
  • Windows中使用Java生成Excel文件并插入圖片的方法

    Windows中使用Java生成Excel文件并插入圖片的方法

    這篇文章主要介紹了Windows中使用Java生成Excel文件并插入圖片的方法,其中向Excel中插入圖片文中通過(guò)使用Apache POI來(lái)實(shí)現(xiàn),需要的朋友可以參考下
    2016-02-02
  • Spring @Lookup深入分析實(shí)現(xiàn)原理

    Spring @Lookup深入分析實(shí)現(xiàn)原理

    這篇文章主要介紹了Spring @Lookup實(shí)現(xiàn)原理,我們知道在spring容器中單獨(dú)的一個(gè)抽象類是不能成為一個(gè)bean的,那么有沒有辦法呢?這個(gè)時(shí)候我們可以使用Lookup注解
    2023-01-01
  • 頁(yè)面設(shè)計(jì)之事件處理綜合介紹

    頁(yè)面設(shè)計(jì)之事件處理綜合介紹

    頁(yè)面設(shè)計(jì)之事件處理,當(dāng)你把界面都設(shè)計(jì)好了,總需要添加相應(yīng)的執(zhí)行動(dòng)作給組件,在有相應(yīng)的時(shí)間處理機(jī)制
    2012-12-12
  • Java實(shí)現(xiàn)文件切割拼接的實(shí)現(xiàn)代碼

    Java實(shí)現(xiàn)文件切割拼接的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Java實(shí)現(xiàn)文件切割拼接的實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • Java 數(shù)據(jù)結(jié)構(gòu)與算法系列精講之環(huán)形鏈表

    Java 數(shù)據(jù)結(jié)構(gòu)與算法系列精講之環(huán)形鏈表

    無(wú)論是靜態(tài)鏈表還是動(dòng)態(tài)鏈表,有時(shí)在解決具體問(wèn)題時(shí),需要我們對(duì)其結(jié)構(gòu)進(jìn)行稍微地調(diào)整。比如,可以把鏈表的兩頭連接,使其成為了一個(gè)環(huán)狀鏈表,通常稱為循環(huán)鏈表
    2022-02-02

最新評(píng)論