网络BIO、NIO、AIO理解

1 篇文章 0 订阅
1 篇文章 0 订阅

同步与异步

同步和异步关注点是消息通讯机制,同步指的是在发出一个调用时,再没有得到结果之前,该调用就不返回。一旦调用返回,就得到返回值;异步指的是在调用发出之后,这个调用就返回了,所以没有返回结果;当有结果之后被调用者会通过状态、通知,来通知调用者或者通过回调来通知调用者;

阻塞与非阻塞

阻塞与非阻塞的关注点是应用程序在等待调用结果时的状态,阻塞指的是调用结果返回之前,当前线程会被挂起,调用的线程只有在得到结果之后才会返回;非阻塞指的是不能立刻得到结果之前,该线程不会阻塞当前线程;

BIO 阻塞

传统的网络IO都是阻塞的,也就是说当一个线程去read或者write的时候,这个线程是阻塞的,并且在这期间此线程不能再做其他事情的。

问题:再进行网络IO时,服务端必须给每个客户端创建一个单独的IO线程去处理,当服务端创建非常多的这种IO线程时,会严重的影响服务端的系统性能;

NIO 同步非阻塞

同步非阻塞IO,当NIO的线程从管道中读写数据时,如果管道中没有数据,那这个线程就会去执行其他的任务。所以这种线程的IO可以管理多个管道的输入和输出,因此,可以在服务端只需要创建一个或多个这样的IO线程去处理客户端的所有请求。NIO使用了多路复用器机制,以socket使用来说,多路复用器通过不断轮询各个连接的状态,只有在socket有流可读或者可写时,应用程序才需要去处理它,在线程的使用上,就不需要一个连接就必须使用一个处理线程了,而是只是有效请求时(确实需要进行I/O处理时),才会使用一个线程去处理,这样就避免了BIO模型下大量线程处于阻塞等待状态的情景

AIO 异步非阻塞

AIO中的读操作和写操作都是异步的,当操作系统执行完read或者write方式之后,操作系统会通知应用程序回调方法进行回调处理。

 

链接:https://www.jianshu.com/p/5bb812ca5f8e

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值