gpt4 book ai didi

浅谈Java中BIO、NIO和AIO的区别和应用场景

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 28 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章浅谈Java中BIO、NIO和AIO的区别和应用场景由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

最近一直在准备面试,为了使自己的java水平更上一个档次,拜读了李林峰老师的《netty权威指南》,了解了java关于io的发展和最新的技术,真是受益匪浅,现在把我总结的关于bio、nio和aio的区别和应用场景概述一遍.

在此之前,先弄清几个概念:

1.同步:使用同步io时,java自己处理io读写.

2.异步:使用异步io时,java将io读写委托给os处理,需要将数据缓冲区地址和大小传给os,完成后os通知java处理(回调).

3.阻塞:使用阻塞io时,java调用会一直阻塞到读写完成才返回.

4.非阻塞:使用非阻塞io时,如果不能立马读写,java调用会马上返回,当io事件分发器通知可读写时在进行读写,不断循环直到读写完成.

下面是重点了(敲黑板!)! 。

1.bio:同步并阻塞,服务器的实现模式是一个连接一个线程,这样的模式很明显的一个缺陷是:由于客户端连接数与服务器线程数成正比关系,可能造成不必要的线程开销,严重的还将导致服务器内存溢出。当然,这种情况可以通过线程池机制改善,但并不能从本质上消除这个弊端.

2.nio:在jdk1.4以前,java的io模型一直是bio,但从jdk1.4开始,jdk引入的新的io模型nio,它是同步非阻塞的。而服务器的实现模式是多个请求一个线程,即请求会注册到多路复用器selector上,多路复用器轮询到连接有io请求时才启动一个线程处理.

3.aio:jdk1.7发布了nio2.0,这就是真正意义上的异步非阻塞,服务器的实现模式为多个有效请求一个线程,客户端的io请求都是由os先完成再通知服务器应用去启动线程处理(回调).

应用场景:并发连接数不多时采用bio,因为它编程和调试都非常简单,但如果涉及到高并发的情况,应选择nio或aio,更好的建议是采用成熟的网络通信框架netty.

以上所述是小编给大家介绍的java中bio、nio和aio的区别详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我网站的支持! 。

最后此篇关于浅谈Java中BIO、NIO和AIO的区别和应用场景的文章就讲到这里了,如果你想了解更多关于浅谈Java中BIO、NIO和AIO的区别和应用场景的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com