栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java面试】IO和NIO有什么区别?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java面试】IO和NIO有什么区别?

IO问题一直是面试的重灾区之一

但又是非常重要而且面试必问的知识点

一个工作了7年的粉丝私信我,他去面试了 4家互联网公司,

有三个公司问他网络IO的问题,另外一个公司问了Netty,结果都没回答上来。

好吧,对于“IO和NIO的区别”,看看普通人和高手的回答。

需要高手面试文档(附赠阿里内部十万字面试文档)或者有不懂的技术面试题想咨询的小伙伴可以扫描文章尾端二维码

普通人:

嗯。。。。。。。。。。

高手:

好的,关于这个问题,我会从下面几个方面来回答。

首先,I/O ,指的是IO流, 它可以实现数据从磁盘中的读取以及写入。

实际上,除了磁盘以外,内存、网络都可以作为I/O流的数据来源和目的地。

在Java里面,提供了字符流和字节流两种方式来实现数据流的操作。

其次,当程序是面向网络进行数据的IO操作的时候,Java里面提供了Socket的方式来实现。

通过这种方式可以实现数据的网络传输。

基于Socket的IO通信,它是属于阻塞式IO,也就是说,在连接以及IO事件未就绪的情况下,当前的连接会处于阻塞等待的状态。

如果一旦某个连接处于阻塞状态,那么后续的连接都得等待。所以服务端能够处理的连接数量非常有限。

NIO,是JDK1.4里面新增的一种NEW IO机制,相比于传统的IO,NIO在效率上做了很大的优化,并且新增了几个核心组件。

Channel、Buffer、Selectors。

另外,还提供了非阻塞的特性,所以,对于网络IO来说,NIO通常也称为No-Block IO,非阻塞IO。

也就是说,通过NIO进行网络数据传输的时候,如果连接未就绪或者IO事件未就绪的情况下,服务端不会阻塞当前连接,而是继续去轮询后续的连接来处理。

所以在NIO里面,服务端能够并行处理的链接数量更多。

因此,总的来说,IO和NIO的区别,站在网络IO的视角来说,前者是阻塞IO,后者是非阻塞IO。

以上就是我对这个问题的理解。

总结

在互联网时代,网络IO是最基础的技术。

无论是微服务架构中的服务通信、还是应用系统和中间件之间的网络通信。

都在体现网络IO的重要性。

如果想获得一对一的面试指导以及面试资料,可以私信我。

 

需要高手面试文档(附赠阿里内部十万字面试文档)或者有不懂的技术面试题想咨询的小伙伴可以扫描下方二维码

↓↓↓↓↓↓↓↓↓↓↓↓↓↓

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/919063.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号