Java IO模型:BIO、NIO、AIO讲解

本文详细介绍了Java的三种IO模型:BIO、NIO和AIO。BIO是同步阻塞,适合连接数较少且固定的场景;NIO是同步非阻塞,通过缓冲区和选择器提高并发处理能力;AIO则是异步非阻塞,允许系统在数据准备就绪时主动通知应用。文中还探讨了NIO的Channel、Buffer和Selector原理,并给出了三者之间的比较和适用场景分析。最后,提到了Netty这一基于NIO的高性能网络通信框架。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IO

首先:什么是IO?

IO,Input/Output 简写,是指内存和外设之间的数据复制的过程。 输入是指数据从外设复制到内存中, 输出则是指数据从内存复制到外设。

目前,IO 可以通过数据流、序列化和文件系统为系统提供输入和输出

Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入

Java IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。

现在使用NIO的场景越来越多,很多网上的技术框架或多或少用到了NIO技术,譬如Tomcat、Jetty,还有基于nio的网络编程框架Netty。

为什么要改进IO?

这一切都是高并发量“惹的祸”!!!

一个使用传统阻塞I/O的系统,如果还是使用传统的一个请求对应一个线程这种模式,一旦有高并发的大量请求,就会有如下问题:

  1. 线程不够用, 就算使用了线程池复用线程也无济于事;
  2. 阻塞I/O模式下,会有大量的线程被阻塞,一直在等待数据,这个时候的线程被挂起,只能干等,CPU利用率很低,换句话说,系统的吞吐量差;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我心向阳iu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值