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深入剖析

相关推荐
小bo波8 小时前
使用Thread子类创建线程 VS 使用Runnable接口创建线程的区别
java·多线程·thread·并发编程·runnable
SamDeepThinking9 小时前
高并发场景下,CompletableFuture与ForkJoinPool该如何取舍?
java·后端·面试
张不才12 小时前
CPU 100% 了怎么办?Java 性能排障的标准化操作
java·后端
shepherd11113 小时前
吞吐量提升 10 倍:高并发大批量数据处理任务的架构演进与性能调优
java·后端·架构
plainGeekDev16 小时前
单例模式 → object 声明
android·java·kotlin
用户2986985301417 小时前
Java 实现 Word 文档文本与图片提取的方法
java·后端
SimonKing17 小时前
铁子,IntelliJ IDEA 2026.1.3来了,升不升?
java·后端·程序员
咖啡八杯1 天前
GoF设计模式——策略模式
java·后端·spring·设计模式
用户128526116022 天前
我把祖传Java项目重构后,接口响应从3s砍到了200ms,只改了这几行代码
java