最简单的话讲BIO、NIO

之前看过太多博客,讲BIO、NIO的对比,有一说一,很多都是照本宣科,不知所云===或者都是直接复制其他博客,看着苦不堪言。

经过反复找视频和各种资料,终于基本懂了。所以这里我用最简单的话来讲BIO和NIO。

首先声明一点,IO主要分为本地磁盘IO和网络IO,在本地磁盘IO中BIO和NIO性能区别不大,我们主要讲网络IO。

BIO就是很早期的IO技术,阻塞型IO,流程大概这样:

1.客户端和服务端通过socket建立连接

2.连接之后新建一个线程,不管是否有输入输出,这个线程一直活着,除非连接断开了

所以很明显看出来BIO是有极大缺陷的,当服务器与一千个客户端建立连接时,就需要一千个线程一直活着,服务端濒临宕机~~~

讲讲NIO,流程大概这样:

1.客户端和服务端通过socket建立连接

2.服务端的selector线程为新建立的连接新建一个channel

3.当有输入请求时,客户端和对应的channel交互

4.selector线程持续轮询所有的channel,当有IO请求时新建一个线程完成IO逻辑执行,执行完成后线程销毁

所以可以看出当使用NIO的时候一台服务器扛上千个连接问题不大,因为一千个客户端同时有IO请求的概率不大,并且有IO请求新建线程的部分可以用线程池来解决,不用美次都去新建线程,因为IO完成后线程就可以结束了,性能上也有很大提升。

那么在网络通信NIO基础上,零拷贝之类的,则是另一个提升点,这个有空再写~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值