java io模型

BIO 模型

模型一:单线程服务器

在这里插入图片描述

  • 执行过程:阻塞等待 connection,串行处理
  • 缺点:
    1. 每次只能处理一个请求

模型二:多线程服务器

在这里插入图片描述

  • 执行过程:对每一个 connection,都 new 一个 thread 去处理
  • 缺点:
    1. 解决了不能并发的问题,但服务器的资源不支持太多并发,会崩溃
    2. 如果使用固定的线程池,如果有的 connection 不释放,不操作,会白白占用资源
  • 应用场景
    1. 适用于连接数目比较小且固定的架构,
    2. 对服务器资源要求比较高,但程序简单易理解。

NIO 模型

在这里插入图片描述

模型一:遍历轮训 select/poll

  • 执行过程:有一个选择器 selector 阻塞的检查(遍历每一个channel检查,jdk4使用linux的select/poll),每个 channel 是否有连接、或读写操作,如果有则执行
  • 缺点:如果并发很多,每次都要遍历所有的

模型二:基于事件响应机制的 epoll

  • 执行过程:过程同模型一,优化了检查机制,采用 基于事件响应机制,当某个 chnnel 有连接、或读写操作,则主动触发事件给 selector,在jdk5采用linux的epoll模型

BIO

  • 埋坑
  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值