disconnect方法

java 自带的HttpURLConnection类有个关闭连接的方法disconnect(),是用于关闭http连接的,但是有一个问题在于,http连接一直都是一次性的,不存在复用的可能性,所以当输入流和输出流关闭后,http请求过程也就结束了,为什么还需要这个方法?
java代码对该方法的说明如下:并没有提到关闭请求释放资源的说明,而是说调用该方法意味着一段时间之内不会再向目标机器发起请求,并且又强调了一遍HttpURLConnection类是不可复用的。看到这段描述,我就想到了该方法应该是和长连接有关的。

/**
* 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长连接

在http1.1版本以及之后的相关版本中,connection默认是keep-alive,意思即是在http请求结束后保持tcp连接不断开以便下一次请求复用,也就是http长连接,但是着要求请求放和服务端都支持,所以有理由怀疑disconnect()方法与http长连接有关,但是着需要验证。

http长连接测试

为此搭建了一个简易spring boot项目作为测试,这里http协议使用是1.1版本,默认保持长连接模式。首先看一下正常的http请求过程中tcp连接状态的变化。
注:因为发起请求的一方在请求结束后程序就关闭了,所以不管有没有调用断开连接的方法,tcp连接都会在程序结束后断开。

在发起http请求后确立tcp连接,由于是本地调用,所以能看到有两个tcp连接记录,但是其实是同一个链接。在程序结束后发起tcp请求的一方断开了链接,接受的一方进入了TIME_WAIT状态,这是防止丢包的准备关闭连接的状态。然后在调用方加上了Thread.sleep()方法,让调用方发起请求后程序不结束。但是发现不管有没有有执行disconnect()方法,tpc连接的状态都是一样的,就是在http请求结束后的一段时间内,tcp连接依然是确认状态,在持续数十秒后,tcp连接就关闭了,并没有发现监听状态。

结论

并没有发现HttpURLConnection类的disconnect()方法在保持http长连接中有任何作用(也有可能是spring boot服务需要专门设计才能支持长连接),似乎该方法本身就没有任何作用。

java HttpURLConnection类的disconnect方法与http长连接相关推荐

  1. java httpurlconnection 开链接后跳转_HttpURLConnection长连接详解

    JDK自带的HttpURLConnection,默认启用keepAlive,支持HTTP / 1.1和HTTP / 1.0持久连接, 使用后的HttpURLConnection会放入缓存中供以后的同h ...

  2. java常用类的方法,java常用类的使用方法

    java常用类的使用方法 Interger:整数类型 1.属性. static int MAX_VALUE:返回最大的整型数: static int MIN_VALUE:返回最小的整型数: stati ...

  3. Java String类的split方法简介

    Java String类的split方法简介 String的split()方法用于按传入的字符或字符串对String进行拆分,返回拆分之后的数组. 1.一般用法 用一般的字符,例如 @ 或 , 等符号 ...

  4. java 抽取类、抽取方法

    java 抽取类.抽取方法 一.为什么用到抽象思想 分析事物时,发现了共性内容,就出现向上抽取.会有这样一种特殊情况,就是方法功能声明相同,但方法功能主体不同.那么这时也可以抽取,但只抽取方法声明,不 ...

  5. java 获取文件名长度_利用Java文件类File的方法,获取磁盘文件的文件名、长度、大小等特性...

    利用Java文件类File的方法,获取磁盘文件的文件名.长度.大小等特性. 如题,大神们谁可以编写一个这样的java程序?     happy530755 | 浏览 1482 次 |举报 我 ...

  6. Java Graphics2D类的绘图方法

    Java语言在Graphics类提供绘制各种基本的几何图形的基础上,扩展Graphics类提供一个Graphics2D类,它拥用更强大的二维图形处理能力,提供.坐标转换.颜色管理以及文字布局等更精确的 ...

  7. java查询类提供的方法_查询一个类的方法和构建器的JAVA程序

    查询一个类的方法和构建器的JAVA程序 JAVA语言的类库中的类不计其数,其中设计的方法更是不胜其多,这是任何一个教科书--无论它是多么详尽--所不能穷尽的.如果我们要使用某个类,要查询它的构建器的用 ...

  8. java面向对象-------类属性和方法,不同类之间调用

    package java面向对象; /** * 类的创建 */public class Stu { //l类属性 int age; int id; String name; Computer comp ...

  9. java 虚类_java虚方法

    java虚方法 我们已经讨论了方法的重载,也就是子类能够重载父类的方法.以下是小编为大家搜索整理的java虚方法,欢迎大家阅读!更多精彩内容请及时关注我们应届毕业生考试网! 当子类对象调用重载的方法时 ...

最新文章

  1. 为什么“或命题真假的判断是有真则真?
  2. hbase 读写调优_hbase优化操作与建议
  3. DL之DCGAN:基于keras框架利用深度卷积对抗网络DCGAN算法对MNIST数据集实现图像生成
  4. 巧妙解决:access denied (javax.management.MBeanTrust...
  5. Cpp / 右值、纯右值、将亡值
  6. ACM国际大学生程序设计竞赛
  7. C++ 析构函数设为虚函数的好处
  8. vue 公众号扫描_vue编写微信公众号打开相机功能
  9. 粤教版小学认识计算机教案,粤教版八年级信息技术下册教案:第一章第一节初识计算机程序oc.pdf...
  10. 深度学习TF—8.经典CNN模型—LeNet-5、VGG13、AlexNet、GoogLeNet、ResNet、DenseNet
  11. Spring Tool Suite开发环境搭建
  12. 写给新手看的机器学习原理--基于机器翻译
  13. vhg电路是什么意思_over是什么意思?
  14. office 安装失败原因
  15. 蘑菇战争 2 for Mac游戏介绍
  16. 如何打造VUCA时代的敏捷型组织?
  17. Games101学习笔记(一)
  18. CTF之做题总结(一)
  19. 什么是*.yml文件
  20. 传感技术学报投稿经验分享

热门文章

  1. 软件项目管理——谈谈软件定价
  2. 计算机网络:以太网中的MTU与MSS
  3. linux下WMB通过ODBC连接DB2数据库
  4. 爬虫入门学习(八)模拟登录丁香园论坛爬取用户信息
  5. fgo怎么把new去掉_fgo命运冠位指定国服NEWYORK2020无限池活动介绍
  6. DevOps 工程师面试问题(持续更新)
  7. Android横屏竖屏切换的问题
  8. 计算机课程设计ssm医药管理信息系统【代码讲解+安装调试+文档指导】
  9. 人脸识别在线上金融业务中的应用风险
  10. 西门子PLC中的高地址,低字节如何理解?