网络IO实现方式

1.BIO方式

BIO即Blocking IO,采用阻塞的方式实现。也就是一个Socket套接字需要使用一个线程来进行处理。发生建立连接,读数据,写数据操作的时候,都可能会阻塞。

    这样操作虽然很简单,但是一个线程只能处理一个Socket

    那么在支持并发的连接,就需要更多的线程来完成这个工作。


2.NIO方式

 NIO即是Nonblocking IO,基于事件驱动思想,采用的是Reactor模式。带来的好处是不需要为每个Socket套接字分配一个线程,而可以在一个线程中处理多个Socket套接字相关的工作。

工作模式:统一通过Reactor对客户端的Socket套接字的事件做处理,然后派发到不同的线程中。这样就解决了BIO中为了支撑更多Socket套接字而需要打开更多线程的问题。


3.AIO方式

   AIO即AsynchronousIO,就是异步IO。AIO采用的是Proator模式,AIO与NIO的差别是,AIO在进行读写操作的时候,只需要调用相应的read/write方法,并且需要传入CompletionHandler(动作完成的处理器) 在完成动作后再调用CompletionHandler,当然,在不同的系统上会有一些细微的差异,不同的语言在SDK上也会有些差异,但总体就是这样的工作方式。NIO的通知发生在动作之前,是在可写,可读的时候,Selector发现这些时间后调用Handler处理。AIO在通知的时候表示相关操作已经完成。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容