Java教程之IO模式精讲,NIO+BIO

第一章 BIO、NIO、AIO介绍

背景

在java的软件设计开发中,通信架构是不可避免的,我们在进行不同系统或者不同进程之间的数据交互,或 者在高并发下的通信场景下都需要用到网络通信相关的技术,对于一些经验丰富的程序员来说,Java早期的网络通 信架构存在一些缺陷,其中最令人恼火的是基于性能低下的同步阻塞式的I/O通信(BIO),随着互联网开发下通 信性能的高要求,Java在2002年开始支持了非阴塞式的I/O通信技术(NIO)。大多数读者在学习网络通信相关技术的 时候,都只是接触到零碎的通信技术点,没有完整的技术体系架构,以至于对Java的通信场景总是没有清晰的解 决方案。本次课程将通过大量清晰直接的案例从最基础的BlO式通信开始介绍到NIO、AIO,读者可以清晰的了解到 阻塞、同步、异步的现象、概念和特征以及优缺点。本课程结合了大量的案例让读者可以快速了解每种通信架构的 使用。

第二章 Java的I/O演进之路

2.1 I/O模型基本说明

I/O模型:就是用什么样的通道或者说是通信模式和架构进行数据的传输和接收,很大程度上决定了程序通信的性能 , Java共支持3种网络编程的I/O模型:BlO. NIO. AlO实际通信需求下,要根据不同的业务场景和性能需求决定选择不同的I/O模型

2.2 I/O模型

Java BIO

同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器 端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销【简单示意图 】

java NIO

Java NIO:同步非阻塞,服务器实现模式为一个线程处理多个请求(连接),即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求就进行处理

java AIO

java A!O(NIO.2):异步异步非阻塞,服务器实现模式为一个有效 请求一个线程,客户端的I/O请求都是由OS先完 成了再通知服务器应用去启动线程进行处理,一般适用于连接数较多且连接时间较长的应用

2.3 BIO、NIO、AIO适用场景分析

1、 BIO方式适用于连接数目比小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中, jDK1.4以前的唯一选择,但程序简单易理解。(并发不是特别高的场景)

2、 NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器弹幕系统服务器间通讯 等。 编程比较复杂,jDK1 .4开始支持。

3、 AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作, 编程比较复杂,JDK7开始支持。

第三章 JAVA BIO深入剖析

相关推荐
五敷有你6 分钟前
【Go】常见的变量与常量
开发语言·后端·golang
菜鸡且互啄6916 分钟前
Spring Boot Security自定义AuthenticationProvider
java·jvm·spring boot
SpongeG20 分钟前
C++期末综合练习
开发语言·c++·算法
寻找自己的自己27 分钟前
常用工具类
java
捕风捉你35 分钟前
迭代器模式在金融业务中的应用及其框架实现
java·开发语言·迭代器模式
PeterClerk39 分钟前
C++ 实现字符串逆序
开发语言·c++·算法
emplace_back1 小时前
C# MathNet
开发语言·机器学习·c#
m0_571957581 小时前
Java | Leetcode Java题解之第218题天际线问题
java·leetcode·题解
一个小浪吴啊1 小时前
Java SpringBoot MongoPlus 使用MyBatisPlus的方式,优雅的操作MongoDB
java·spring boot·mongodb
InterestingFigure1 小时前
Java 使用sql查询mongodb
java·开发语言·数据库·sql·mongodb