校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > java语言 > 多线程的创建和执行
题目

NIO和传统的IO有什么区别呢?

解答

IO是面向流的,NIO是面向块(缓冲区)的

IO面向流的操作一次一个字节地处理数据。一个输入流产生一个字节的数据,一个输出流消费一个字节的数据,导致了数据的读取和写入效率不佳。

NIO面向块的操作在一步中产生或者消费一个数据块。
按块处理数据比按(流式的)字节处理数据要快得多,同时数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动。

这就增加了处理过程中的灵活性

IO是阻塞的,NIO是非阻塞的

对于传统的IO,当一个线程调用read() 或 write()时,该线程被阻塞,直到有一些数据被读取,或数据完全写入。
该线程在此期间不能再干任何事情了。
而对于NIO,使用一个线程发送读取数据请求,没有得到响应之前,线程是空闲的,此时线程可以去执行别的任务,而不是像IO中那样只能等待响应完成。

C 1条回复 评论
米线还有吗

正在研究redis,感谢,太赞了!!!!!

发表于 2022-06-06 21:00:00
0 0