IO NIO

本文详细介绍了Java NIO(New IO)的概念、IO与NIO的区别,包括面向缓冲区、阻塞与非阻塞、同步与异步的区别。接着,深入探讨了NIO中的缓冲区Buffer和通道Channel的使用,以及多路复用Selector的应用场景。最后,总结了NIO的常见IO模型和面试问题,分析了NIO的优缺点及现状。
摘要由CSDN通过智能技术生成

1,NIO

1.1 概念

NIO英文全称New IO是从Java 1.4版本开始引入的一组新的 API,主要目的是基于这组新的API来改善传统IO的操作性能。
其核心包括: Buffers,Channels,Selectors 三个核心部分

1.2 IO的过程

对于一个network IO (以read为例),它会涉及到两个系统对象,一个是调用这个IO的process,另一个就是系统内核(kernel)。
当一个发生read操作时,该操作会经历两个阶段:

  1. 将数据拷贝到操作系统内核Buffer
  2. 将操作系统内核数据拷贝到用户进程
    这就是IO的两个核心阶段,但是采用的API不同,读写效率则不同. 传统IO处理读写业务时真的高效吗?

2,IO和NIO的对比

2.1 面向流与面向缓冲区

IO和NIO之间第一个最大的区别是:IO是面向流的,NIO是面向缓冲区的

2.1.1 面向流

IO属于面向流的操作,输入、输出流操作是单向的
在这里插入图片描述

2.1.2 面向缓冲区

NIO属于面向缓冲区的操作,输入、输出操作是双向且可移动指针,灵活性更强

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值