欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

为什么说NIO比IO效率要高

程序员文章站 2022-03-10 10:51:55
个人理解:1、io是面向流的,字节流和字符流,其读与写是频繁与磁盘交互,是用户态和内核态频繁切换,也就是io是用户态,不能直接操作内核,需要操作系统调用内核来读写磁盘,切换本身就耗时;nio是面向缓冲区的,使用内存映射,直接操作内存中数据(类似于c语言中allocateMemery等方法,这一点类似cas直接操作内存),避免了用户态和内核态的频繁奇切换2、io是线程阻塞的,一个连接或者说一个线程读取,在没有数据之后进入阻塞,等待;nio是线程非阻塞,其使用的buffer和channel(通道),当...

个人理解:
1、io是面向流的,字节流和字符流,其读与写是频繁与磁盘交互,是用户态和内核态频繁切换,也就是io是用户态,不能直接操作内核,需要操作系统调用内核来读写磁盘,切换本身就耗时;
nio是面向缓冲区的,使用内存映射,直接操作内存中数据(类似于c语言中allocateMemery等方法,这一点类似cas直接操作内存),避免了用户态和内核态的频繁奇切换

2、io是线程阻塞的,一个连接或者说一个线程读取,在没有数据之后进入阻塞,等待;
nio是线程非阻塞,其使用的buffer和channel(双向通道),当前通道没有数据读取时,可以切换到另一个通道(数据的来源或目的地)中;

3、io是一个线程一个连接
nio使用selector选择器,响应式处理客户端的请求,一个线程可以解决多个连接的数据处理;

参考一个不错的文章:
https://blog.csdn.net/iteye_11910/article/details/82604173?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-1.channel_param

本文地址:https://blog.csdn.net/qq_21223653/article/details/107692159

相关标签: 内核 java