当前位置: 首页 > 面试题库 >

Java:BIO、NIO、AIO 有什么区别?

沈弘文
2023-04-24

(1)同步阻塞BIO

一个连接一个线程。

JDK1.4之前,建立网络连接的时候采用BIO模式,先在启动服务端socket,然后启动客户端socket,对服务端通信,客户端发送请求后,先判断服务端是否有线程响应,如果没有则会一直等待或者遭到拒绝请求,如果有的话会等待请求结束后才继续执行。

(2)同步非阻塞NIO

NIO主要是想解决BIO的大并发问题,BIO是每一个请求分配一个线程,当请求过多时,每个线程占用一定的内存空间,服务器瘫痪了。

JDK1.4开始支持NIO,适用于连接数目多且连接比较短的架构,比如聊天服务器,并发局限于应用中。

一个请求一个线程。

(3)异步非阻塞AIO

一个有效请求一个线程。

JDK1.7开始支持AIO,适用于连接数目多且连接比较长的结构,比如相册服务器,充分调用OS参与并发操作。

 类似资料:
  • 本文向大家介绍BIO,NIO,AIO 有什么区别?相关面试题,主要包含被问及BIO,NIO,AIO 有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。 NIO:New IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复

  • 问题内容: 我不太了解它们之间的区别,因此我对这两个软件包有一些疑问。 在Google上浏览了一下之后,似乎Oracle决定使用JDK7版本的更新和增强软件包来更新该软件包。 封装的性能与封装相比如何? 从到有什么大变化?(例如新方法,功能) 为什么必须对原始软件包进行更新? 如今是该软件包的代名词吗? 这并不是我想在代码中使用旧版包,我对此真的很好奇。请告诉我他们的区别? 问题答案: Java最

  • java nio select的代码和linux epoll的代码看起来是一样的。没有循环来获取套接字fd,linux选择代码片段确实使用循环来获取套接字fd。 所以我的问题是,java nio select和linux epoll的方式相同吗? java nio选择 linux e轮询 linux选择

  • 摘要: 本系列基于炼数成金课程,为了更好的学习,做了系列的记录。 本文主要介绍 什么是NIO Buffer Channel 网络编程 AIO IO感觉上和多线程并没有多大关系,但是NIO改变了线程在应用层面使用的方式,也解决了一些实际的困难。而AIO是异步IO和前面的系列也有点关系。在此,为了学习和记录,也写一篇文章来介绍NIO和AIO。 1. 什么是NIO NIO是New I/O的简称,与旧式的

  • 客户端发送另一个请求,服务器再次挂起该请求。 当这种情况持续发生时,会使用多少线程?

  • 问题内容: 事件驱动和异步通常用作同义词。两者之间有什么区别吗? 另外,和之间有什么区别?它们如何配合在一起? 最后,我读过很多遍了,Linux中的AIO被严重破坏了。它到底有多坏? 谢谢。 问题答案: 事件是实现异步执行的范例之一。但是,并非所有异步系统都使用事件。那是关于这两个的语义含义-一个是另一个的超实体。 epoll和aio使用不同的隐喻: epoll是一个阻塞操作()-阻塞线程直到发生