IO流 - IO通信(BIO & 伪异步IO & NIO & AIO)

版权声明:本文为博主原创文章,转载前动动小手点个【赞】吧~ https://blog.csdn.net/Dream_Weave/article/details/85260970

1、BIO 服务端一个线程会负责一个连接,进行请求的处理和响应,比较明显,当客户端比较多的时候,服务端的线程可能就不够了,这时候对应的请求就没法及时处理了 

客户端个数:服务端处理线程个数=1:1

IO类型:阻塞同步

扫描二维码关注公众号,回复: 4661148 查看本文章

API使用难度:简单

调试难度:简单

可靠性:比较差

吞吐量:低

 

2、伪异步IO 服务端会维护一个线程池来处理请求端的请求,也比较明显,当客户端的请求比较多的时候,线程池的线程也是不够的,此时也会出现请求处理阻塞的情况

客户端个数:服务端处理线程个数=m:n

IO类型:阻塞同步

API使用难度:简单

调试难度:简单

可靠性:比较差

吞吐量:中

 

3、NIO 这个是当前比较牛逼的技术了,服务端通过缓存区、通道、多路复用等技术,允许客户端的请求成千上万,读写都首先通过缓存区来承接,然后通过通道来传输信息,通过多路复用器轮询通道,看看是否存在读或者写时间,然后再进行处理,大大提升了IO处理的性能和稳定性

客户端个数:服务端处理线程个数=m:1

IO类型:非阻塞同步

API使用难度:非常复杂,所以,给了Netty机会

调试难度:复杂

可靠性:比较高

吞吐量:高

 

4、AIO 异步IO,简化了NIO的通信模型

客户端个数:服务端处理线程个数=m:0

IO类型:非阻塞异步

API使用难度:复杂

调试难度:复杂

可靠性:比较高

吞吐量:高

猜你喜欢

转载自blog.csdn.net/Dream_Weave/article/details/85260970