参考视频:黑马Java-IO模式精讲(AIO&BIO&NIO),Java-IO基础+高级+实战全套教程,黑马程序员行业大牛深度精讲_哔哩哔哩_bilibili
目录
一、了解
1.1 I/O模型
就是用什么样的通道或者说是通信模式和架构进行数据的传输与接收,很大程度上决定了程序通信的性能
1.2 JAVA三大IO模型
java共支持3种网络编程的I/O模型:BIO、NIO、AIO
BIO介绍
同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有链接请求时服务器端就需要启动一个线程进行处理,如果这个连接不作任何事情会造成不必要的线程开销
客户端的数据是否有,其他的线程都需要等待
流程图:
NIO介绍
服务器实现模式为一个线程处理多个请求(连接),即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮训到连接有I/O请求(数据操作请求)就会处理,如果没有,则去做其他事情,不需要一直等待
流程图:
AIO介绍
异步 异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程,一般适用于连接数较多且连接时间较长的应用
(客户端数据都是由操作系统处理,处理完成后会通知相应的服务端线程进行数据接收)
二、适用场景
2.1 BIO适用场景
BIO方式适用于链接数目较小且固定的架构,这种方式对 服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序简单并且容易理解
2.2 NIO适用场景
NIO方式适用于连接数目较多且连接比较短(轻操作)的架构,比如聊天服务器,弹幕系统,服务器间通讯等。编程比较复杂,JDK1.4后开始支持
2.3 AIO适用场景
Aio方式适用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JKD7开始支持
版权声明:本文为weixin_45506581原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。