BIO,伪异步IO,NIO,AIO与Netty

BIO(阻塞IO)

一个线程负责连接,一请求一应答,缺乏弹性伸缩能力。

 

伪异步IO通信(BIO优化版本)

线程池负责连接,M请求N应答,线程池阻塞。伪异步IO是BIO的一个优化方案。

创建N个线程的线程池对请求进行处理,由于线程池可创建大小,所以资源是可控的,当并发很大时也不会造成资源耗尽或者当机,但当有大量客户端接入的时候会造成线程池阻塞。

 

NIO通信(非阻塞IO,JDK1.4后引入)

缓冲区Buffer,通道Channel,多路复用器Selector。

任何时候访问NIO中的数据都是通过缓冲区进行操作的。

网络数据通过通道Channel进行读写,是双向全双工的。

Selector会不断的轮询注册在其上的Channel,当某个Channel发生读写事件会被轮询出来,通过SelectorKey获取就绪Channel的

集合进行后续的IO操作,JDK使用epoll()代替传统的selector实现,所以并没有最大连接数的限制,可以接入成千上万的客户端,所以在IO通信领域是一个极大的进步。

 

AIO通信(异步非阻塞IO,JDK1.7之后,NIO2.0)

链接注册读写事件和回调函数,读写方法异步,主动通知程序。

四种IO对比

Netty

Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。Netty 是一个基于NIO的客户、服务器端编程框架。

Netty的应用使用请看下章。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值