IO与NIO

1. 背景

IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。
NIO本身是基于事件驱动思想来完成的,其主要想解决的是BIO的大并发问题。

2. BIO

即传统IO。JDK1.4之前,当网络连接采用BIO模式时,服务端和客户端的socket是一对一连接通信的,通信结束前会阻塞当前进程。因此并发需要开启多线程来实现,一旦面对大并发时就需要开启大量线程,从而造成服务器资源浪费。
特点:

  1. 有2个阻塞点:获取socket套接字、获取客户端输入流。
  2. 在没有优化BIO的前提下,1个服务端只能为1个客户端服务。
  3. 线程模型,通过多线程实现1个服务端为多个客户端服务。
  4. 多线程IO(伪异步)问题: 客户端:线程(IO)=N:N

3. NIO

NIO设计思想:单线程处理并发。
NIO两种实现方式:epoll(性能较优,linux已实现)、selector(linux和window都有实现)
应用:redis

参考

  1. BIO与NIO、AIO的区别:https://blog.csdn.net/skiof007/article/details/52873421
  2. 面试必问IO与NIO精讲(代码和理论讲解):https://www.bilibili.com/video/BV1eb411p7WV?from=search&seid=16491402583165942804
  3. NIO–(由浅入深)视频教程(偏向代码讲解):https://www.bilibili.com/video/av79126039/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值