`

面试 BIO NIO AIO

阅读更多

面试 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、对比



 

 

 

 

 

 

 

 

 

 

  • 大小: 103.5 KB
  • 大小: 378.9 KB
  • 大小: 50.1 KB
  • 大小: 43.4 KB
  • 大小: 23.2 KB
  • 大小: 109.5 KB
  • 大小: 107.9 KB
分享到:
评论

相关推荐

    BIO,NIO,AIO,Netty面试题.pdf

    ### BIO、NIO、AIO、Netty 面试题解析 #### 1. Java IO 基础概述 Java中的I/O操作是通过流(Stream)来实现的,所有的数据都通过流的方式被串行化处理。串行化的含义在于数据必须按顺序输入输出。Java中的IO操作...

    2024年Java常见的-BIO,NIO,AIO,Netty面试题

    ### 2024年Java常见BIO、NIO、AIO、Netty面试题解析 #### 一、基础知识概述 1. **IO概念**: - Java中的I/O(Input/Output)指的是输入输出操作,它以流为基础进行数据的输入输出。所有的数据在Java中都是以流的...

    BIO,NIO,AIO,Netty面试题

    本文将深入探讨四个关键的概念:BIO( Blocking I/O)、NIO(Non-blocking I/O)、AIO(Asynchronous I/O)以及Netty,这些都是Java平台上的网络编程模型。在面试中,对这些概念的理解和应用能力常常被用来评估候选...

    BIO,NIO,AIO,Netty面试题 35道.pdfJava并发编程最全面试题 123道.pdfJava并发编程面试题

    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面试题 35道.pdf

    "BIO,NIO,AIO,Netty面试题" 在面试中,IO相关的问题非常常见,这篇文章总结了BIO、NIO、AIO、Netty四个重要的IO模型,并对每个模型进行了详细的解释。 1. Java中的IO Java中的IO是以流为基础进行数据的输入输出的...

    BIO,NIO,AIO,Netty面试题 35道1

    Java的IO模型从BIO到NIO再到AIO,逐步解决了并发处理和效率问题。Netty作为NIO的优秀实现,进一步简化了网络编程的复杂度。了解这些概念和框架,对于提升Java服务器应用的性能和可扩展性至关重要。

    BIO,NIO,AIO,Netty面试题 35道,面试通关宝典

    BIO,NIO,AIO,Netty 面试题 35 道,面试通关宝典 在 Java 中,IO 是以流为基础进行数据的输入输出的,所有数据被串行化(所谓串行化就是数据要按顺序进行输入输出)写入输出流。简单来说就是 Java 通过 IO 流方式和...

    Java面试题资料合集-44套.rar

    java面试-BIO,NIO,AIO,Netty面试题 35道 java面试-Java+最常见的+200++面试题汇总+答案总结汇总 java面试-Java并发编程最全面试题 123道 java面试-Java集合框架常见面试题 java面试-Java虚拟机(JVM)面试题 51道 ...

    2023最新JAVA面试题集

    BIO,NIO,AIO,Netty面试题 35道 BTA 常问的 Java基础39道常见面试题及详细答案 Dubbo面试题 47道 ElasticSearch面试题 30道 Git常用命令面试题 60道 Java并发编程最全面试题 123道 Kafka知识汇总 18道 Linux面试题 50...

    Java面试题资源合集

    土豪可直接下载,建议搜索微信公众号【致架构师】,回复面试题,可免费下载Java面试题资源合集,涵盖Java各项核心技术面试资料,包括BIO,NIO,AIO,Netty,Dubbo,ElasticSearch,Git,Java虚拟机(JVM),异常,...

    JBOSS Netty面试题

    在这篇文章中,我们将探讨 JBOSS Netty 面试题,涵盖了 BIO、NIO 和 AIO 的区别、NIO 的组成、Netty 的特点等知识点。 BIO、NIO 和 AIO 的区别 BIO(Blocking I/O)是一种传统的 I/O 模式,每个连接都需要启动一个...

    完结10章2024 Java 高分面试宝典 一站式搞定技术面&项目面

    1、BIO、NIO、AIO 有什么区别? (1)同步阻塞BIO 一个连接一个线程。 JDK1.4之前,建立网络连接的时候采用BIO模式,先在启动服务端socket,然后启动客户端socket,对服务端通信,客户端发送请求后,先判断服务端...

    Netty面试专题及答案.pdf

    1.BIO、NIO和AIO的区别? BIO:一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理。线程开销大。 伪异步IO:将请求连接放入线程池,一对多,但线程还是很宝贵的资源。 NIO:一个请求一个...

    JAVA后端详细面试资料

    包括 Dubbo、Java基础、并发、集合、BIO,NIO,AIO,Netty、ElastSerarch、JVM、Linux、Mybatis、kafka、MySQL、Redis、RabbitMQ、Spring系列、设计模式、计算机网络等等详细面试题

    Netty面试专题.pdf

    在准备Java面试时,上述知识点是非常重要的考点,面试者应当熟练掌握BIO、NIO和AIO的区别,了解NIO的Buffer、Channel和Selector等组件的使用和原理,同时对Netty框架的特点和优势有深入的理解和实践,这样才能够在...

    10道Java高级必备的Netty面试题!

    1. BIO、NIO和AIO的区别: - BIO(阻塞IO):同步并阻塞式的IO操作,服务器每处理一个客户端连接都会创建一个新的线程,当线程空闲时,它将被阻塞等待连接,当大量连接到来时,线程资源耗尽,效率低下。 - 伪异步...

    华为面试题华为面试题华为面试题华为面试题华为面试题

    6. **网络编程**:TCP/IP协议、Socket编程、HTTP协议在Java中的实现,以及网络通信中的IO模型(如BIO、NIO、AIO)。 7. **异常处理**:了解异常的分类(检查型异常和运行时异常)、捕获与抛出机制,以及如何编写...

Global site tag (gtag.js) - Google Analytics