当前位置: 首页 > article >正文

Java BIO(Blocking IO:同步并阻塞式IO)

1.基本介绍

1>.Java BIO就是传统的java io编程,其相关的类和接口在"java.io"包下;

2>.BIO(Blocking I/O): 同步阻塞,服务器实现模式为一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理;

如果这个连接不做任何事情会造成(服务器)不必要的线程开销,可以通过线程池机制改善(实现多个客户端连接服务器);

3>.BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,程序简单易理解;

2.工作机制

在这里插入图片描述
流程说明:

①.服务器端创建/启动一个ServerSocket,等待客户端的链接或者说监听客户端的请求(在等待过程中,服务器端线程会一直阻塞,不能做其他任何事情);

②.客户端创建/启动Socket对服务器进行通信,默认情况下服务器端需要对每个客户建立一个线程与之通讯;

③.客户端发出请求后,先咨询/试探服务器是否有线程响应(即服务器端是否有空闲的线程或者是否能够创建新的线程处理当前请求),如果没有则会等待(等待过程中客户端线程无法再去做其他的任何事情),或者直接被拒绝;

④.如果有响应,客户端线程会等待请求结束后(请求被处理完成,正常返回响应),才能继续执行;

<


http://www.kler.cn/a/15391.html

相关文章:

  • 如何在MindMaster思维导图中制作PPT课件?
  • 单片机学习笔记 1. 点亮一个LED灯
  • JS的学习与使用
  • HDMI之SBTM
  • 微信小程序设置屏幕安全距离
  • 处理namespace问题:Namespace not specified for AGP 8.0.0
  • idea使用 ( 五 ) idea常用快捷键
  • 知识图谱实战应用6-基于知识推理进行知识补全的功能
  • 「 Redis 」RDB和AOF持久化全面解析
  • 使用Sybase sp_recompile重新编译存储过程和触发器
  • 如何使用osquery在Windows上实时监控文件?
  • Java新提案,最终还是靠近C#了
  • 高度可定制可用于商用目的全流程供应链系统(全部源码)
  • Python 二进制 八进制 十进制 十六进制之间的转换
  • JSP数据库连接池的研究与实现(源代码+论文)
  • 嵌入式安卓开发:使用Camera2获取相机
  • 网络安全真的没法入行吗?
  • RedHat8配置本地YUM源
  • 知识图谱实战应用7-最完整的常用Cypher查询语句与实际应用
  • Unlimited “使用GPT-4 ”!它来了!
  • html学习(布局方式(layout)、浮动(float)、定位(position)、弹性盒(flex))
  • C++设计模式11:享元模式
  • Sharding-JDBC之垂直分库水平分表
  • 结构型模式-享元模式
  • 浅谈:JVM垃圾回收
  • pt11mysql多表查询优化