为什么说NIO比IO效率要高
个人理解:
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验证码工具实例代码
下一篇: Java语言介绍和环境安装及变量配置
推荐阅读