大厂面试题-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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值