前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java BIO 认识

Java BIO 认识

作者头像
LieBrother
发布2019-04-02 11:00:34
7650
发布2019-04-02 11:00:34
举报
文章被收录于专栏:LieBrotherLieBrother

本文简单介绍 Java 中的 BIO 知识。

1

BIO 通信模型

BIO 通信模型如下图所示:

BIO 是一个一请求一应答的通讯模型,怎么理解一请求一应答呢?

服务端由一个独立的 Acceptor 线程负责监听所有客户端的连接,接收到客户端连接请求之后为每个客户端创建一个新的线程进行处理,处理完成之后,通过输出流返回应答给客户端,然后线程销毁。也即是一个客户端请求会对应一个服务端线程来处理。

2

BIO 的一个简单例子

  • BioServer 作为服务端。创建一个 ServerSocket 绑定 IP,调用 accept() 来接收客户端的请求,每接收到一个客户端的请求,就新创建一个线程来处理。
  • BioHandler 用来处理客户端的请求。通过 BufferedReader 接收客户端请求的输入内容,用 PrintWriter 返回输出内容到客户端。下面代码实现如果客户端发送的内容是 current time,则返回当前的时间。
  • BioClient 作为客户端,连接服务端,然后通过 PrintWriter 向服务端发送数据,使用 BufferedReader 接收服务端返回的数据。

3

BIO 弊端

每一个新的客户端请求接入时,服务端必须创建一个新的线程处理新接入的客户端链路,一个服务端线程只能处理一个客户端连接。在高并发的情况下,容易占用大量资源,无法高效的处理。

做个有梦想的程序猿

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 LieBrother 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档