面试 BIO NIO AIO
1、 BIO NIO AIO
阻塞 是 否 否
同步 是 是 否
可以参考 https://blog.csdn.net/m0_38109046/article/details/89449305
2、阻塞 : 指的是处理线程的阻塞
InputStream 的 read 方法是阻塞的 :jdk 文档里说:
This method blocks until input data is available, end of file is detected, or an exception is thrown.
当对 socket的输入流进行读取操作的时候 他会一直阻塞下去 知道发生如下的三种事件:
有数据可读
可用数据已经读取完毕
发生空指针或者IO异常
3、同步、异步:指的是调用者
4、BIO
BIO面向 Stream
一个连接对应一个处理线程
inputstream 的读是 阻塞的
连接数很大时 处理线程变的很多。线程上下文切换是有性能损耗的。线程数大到一定程度,系统性能急剧下降。
继续增大并发 会导致内存溢出 创建线程失败等问题,最终导致进程宕机或僵死。
5、为了改进一连接一线程模型 引入了线程池
不再是一个连接一个线程 变成 M:N
线程池 队列大小和线程数可以设置,可以控制资源的使用 避免资源耗尽宕机
但 这本质上 还是 BIO 仍然是同步阻塞的。
6、NIO
jdk 1.4 引入
NIO 面向Buffer
socket通道类可以运行非阻塞模式并且是可选择
ServerChannel 注册到 Selector
Selector 轮训 Channel 状态,满足状态再进行相应业务处理
7、AIO
JDK1.7 也称NIO2.0
AIO 的 I/O 操作,有两种方式的 API 可以进行:
- Future 方式;
- Callback 方式。
-
8、对比
相关推荐
### BIO、NIO、AIO、Netty 面试题解析 #### 1. Java IO 基础概述 Java中的I/O操作是通过流(Stream)来实现的,所有的数据都通过流的方式被串行化处理。串行化的含义在于数据必须按顺序输入输出。Java中的IO操作...
### 2024年Java常见BIO、NIO、AIO、Netty面试题解析 #### 一、基础知识概述 1. **IO概念**: - Java中的I/O(Input/Output)指的是输入输出操作,它以流为基础进行数据的输入输出。所有的数据在Java中都是以流的...
本文将深入探讨四个关键的概念:BIO( Blocking I/O)、NIO(Non-blocking I/O)、AIO(Asynchronous I/O)以及Netty,这些都是Java平台上的网络编程模型。在面试中,对这些概念的理解和应用能力常常被用来评估候选...
BIO,NIO,AIO,Netty面试题 35道.pdf Java并发编程最全面试题 123道.pdf Java并发编程面试题 75题.pdf JAVA核心面试知识点整理.pdf Java垃圾收集必备手册.pdf Java虚拟机(JVM)面试题 51道.pdf SpringBoot面试题 30道...
"BIO,NIO,AIO,Netty面试题" 在面试中,IO相关的问题非常常见,这篇文章总结了BIO、NIO、AIO、Netty四个重要的IO模型,并对每个模型进行了详细的解释。 1. Java中的IO Java中的IO是以流为基础进行数据的输入输出的...
Java的IO模型从BIO到NIO再到AIO,逐步解决了并发处理和效率问题。Netty作为NIO的优秀实现,进一步简化了网络编程的复杂度。了解这些概念和框架,对于提升Java服务器应用的性能和可扩展性至关重要。
BIO,NIO,AIO,Netty 面试题 35 道,面试通关宝典 在 Java 中,IO 是以流为基础进行数据的输入输出的,所有数据被串行化(所谓串行化就是数据要按顺序进行输入输出)写入输出流。简单来说就是 Java 通过 IO 流方式和...
java面试-BIO,NIO,AIO,Netty面试题 35道 java面试-Java+最常见的+200++面试题汇总+答案总结汇总 java面试-Java并发编程最全面试题 123道 java面试-Java集合框架常见面试题 java面试-Java虚拟机(JVM)面试题 51道 ...
BIO,NIO,AIO,Netty面试题 35道 BTA 常问的 Java基础39道常见面试题及详细答案 Dubbo面试题 47道 ElasticSearch面试题 30道 Git常用命令面试题 60道 Java并发编程最全面试题 123道 Kafka知识汇总 18道 Linux面试题 50...
土豪可直接下载,建议搜索微信公众号【致架构师】,回复面试题,可免费下载Java面试题资源合集,涵盖Java各项核心技术面试资料,包括BIO,NIO,AIO,Netty,Dubbo,ElasticSearch,Git,Java虚拟机(JVM),异常,...
在这篇文章中,我们将探讨 JBOSS Netty 面试题,涵盖了 BIO、NIO 和 AIO 的区别、NIO 的组成、Netty 的特点等知识点。 BIO、NIO 和 AIO 的区别 BIO(Blocking I/O)是一种传统的 I/O 模式,每个连接都需要启动一个...
1、BIO、NIO、AIO 有什么区别? (1)同步阻塞BIO 一个连接一个线程。 JDK1.4之前,建立网络连接的时候采用BIO模式,先在启动服务端socket,然后启动客户端socket,对服务端通信,客户端发送请求后,先判断服务端...
1.BIO、NIO和AIO的区别? BIO:一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理。线程开销大。 伪异步IO:将请求连接放入线程池,一对多,但线程还是很宝贵的资源。 NIO:一个请求一个...
包括 Dubbo、Java基础、并发、集合、BIO,NIO,AIO,Netty、ElastSerarch、JVM、Linux、Mybatis、kafka、MySQL、Redis、RabbitMQ、Spring系列、设计模式、计算机网络等等详细面试题
在准备Java面试时,上述知识点是非常重要的考点,面试者应当熟练掌握BIO、NIO和AIO的区别,了解NIO的Buffer、Channel和Selector等组件的使用和原理,同时对Netty框架的特点和优势有深入的理解和实践,这样才能够在...
1. BIO、NIO和AIO的区别: - BIO(阻塞IO):同步并阻塞式的IO操作,服务器每处理一个客户端连接都会创建一个新的线程,当线程空闲时,它将被阻塞等待连接,当大量连接到来时,线程资源耗尽,效率低下。 - 伪异步...
2.BIO,NIO,AIO,Netty 3.Dubbo 4.ElasticSearch 5.Git 6.java并发 7.java基础 8.java集合 9.虚拟机 10.异常 11.Kafka 12.Kinux 13.Memcache 14.MyBatis 15.MySQL 16.Nginx 17.RabbitMQ 18.Redis 19.SpringBoot 20....