nio详解

聊聊nio

bio叫做同步阻塞的io模型, 数据的读取和写入必须阻塞在一个线程里面, 等待完成, 也就是说, 当连接数不是很高, 例如说, 只有不到1000的连接数的这么一个情况的时候, 这种模型是很不错的, 可以让每一个连接都专注于自己的一个io, 并且编码简单, 更不用去考虑系统的一个过载和限流的问题, 更何况线程池本身就有等待和缓冲的这么一个作用, 连接量不高的情况下是可以兼顾性能和连接量的.

但是当我们的连接数一旦大的时候, 传统的bio模型是十分无力的.

nio, 叫做同步非阻塞的这么一个io模型, 在java的1.4就引入了nio的框架, 在java.nio包下, 提供了这些Channel(通道\频道), Selector(选择器)和Buffer(缓冲)这些抽象类.

nio中的n可以理解为non-blocking(非阻塞), 是支持面向缓冲面向通道的一个io操作, nio提供了和传统io模型中的socket, serversocket相对应的一个socket channel和serversocket channel这两种不同的套接字的通道的实现.

这两种通道都支持阻塞和非阻塞的一个模型, 阻塞就和传统的bio是一样的了.(性能和可靠性都一般). 但是非阻塞就正好相反.

低负载, 低并发的应用程序可以使用阻塞的io模型来提高效率, 以及更好的维护, 因为代码比较简单.

而对于这种高负载, 高并发的这种应用, 我们应该使用nio这种非阻塞的模型来进行开发.

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值