面试 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面试题
BIO,NIO,AIO,Netty面试题
主要是介绍java方面网络方面 网络通信方面的面试题,核心内容主要是关于BIO,NIO,AIO,Netty的面试,算是一套八股文吧,还是老话,该背的还是要背一背!!!
BIO,NIO,AIO,Netty面试题 35道,面试通关宝典
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:Java中I/O是以流为基础进行数据的输入输出的,所有数据被串行化(所谓串行化就是数据要按顺序 进行输入输出)写入输出流。简单来说就是java通过io流方式和外部设备进行交互。在Java...
1. 什么是IO 2. 在了解不同的IO之前先了解:同步与异步,阻塞与非阻塞的区别 3. 什么是BIO 4. 什么是NIO 5. 什么是AIO 8. 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),异常,...
1.BIO、NIO和AIO的区别? BIO:一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理。线程开销大。 伪异步IO:将请求连接放入线程池,一对多,但线程还是很宝贵的资源。 NIO:一个请求一个...
包括 Dubbo、Java基础、并发、集合、BIO,NIO,AIO,Netty、ElastSerarch、JVM、Linux、Mybatis、kafka、MySQL、Redis、RabbitMQ、Spring系列、设计模式、计算机网络等等详细面试题
1.BIO、NIO 和 AIO 的区别? BIO:一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理。线 程开销大。 伪异步 IO:将请求连接放入线程池,一对多,但线程还是很宝贵的资源。 NIO:一个请求一...
• 熟悉常用IO模型(BIO、NIO、AIO),熟悉JVM类加载过程与机制 • 了解JVM性能监控以及调优,会使用jps、jstack、jmap、jstat、jhat,了解内存泄露排查具体方法 • Java基础 • 熟练的使用Java语言进行面向对象程序...
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....
jdk 1.8中的日期时间API,数据结构中图的实现及操作和广度优先遍历/深度优先遍历(其他待完善),生成XML文件工具类,防止XSS攻击解决方案,mybatis逆向工程,接口并发测试,BIO,NIO,AIO,Netty的服务,客户端......
Java 最常见的 208 道面试题:第一模块答案 JDK 和 JRE 有什么区别? == 和 equals 的区别是什么? 两个对象的 hashCode()相同,则 equals()也一定为 ... BIO、 NIO、 AIO 有什么区别? Files 的常用方法都有哪些?
1.BIO、NIO 和 AIO 的区别? 2.NIO 的组成? 3.Netty 的特点? 4.Netty 的线程模型? 5.TCP 粘包/拆包的原因及解决方法? 6.了解哪几种序列化协议? 7.如何选择序列化协议? 8.Netty 的零拷贝实现? 9.Netty 的高...