NIO概述

简介: NIO也叫(New IO)或者(no-blocking io),是jdk1.4后提供的,主要目的是为了提高速度,和我们前面介绍的’内核空间’和’用户空间’相关。是一个可以替代标准Java IO API的新IO API,提供了与标准IO不同的IO工作方式。


NIO简介

 NIO也叫(New IO)或者(no-blocking io),是jdk1.4后提供的,主要目的是为了提高速度,和我们前面介绍的’内核空间’和’用户空间’相关。是一个可以替代标准Java IO API的新IO API,提供了与标准IO不同的IO工作方式。

image.png

NIO和IO的区别

 通过“内核空间”“用户空间”“虚拟内存”等概念的介绍,大家可能会感觉普通IO的性能要差很多,因为要做两次数据复制,其实“旧”的I/O包已经使用NIO重新实现过,即使我们不显式的使用NIO编程,IO的速度也不会很慢。那么专门学习NIO还有必要吗?这我们就要弄清楚IO的场景主要有两个:文件IO和网络IO

 NIO的作用:在网络IO【非阻塞】中就可以体现出来了!具体怎么体现的后面再详细介绍。

image.png

Buffer和Channel介绍

 在NIO中并不是以流的方式来处理数据的,而是以buffer缓冲区和Channel管道配合使用来处理数据。

image.png

简单理解一下:

 Channel管道比作成铁路,buffer缓冲区比作成火车(运载着货物),而我们的NIO就是通过Channel管道运输着存储数据的Buffer缓冲区的来实现数据的处理!要时刻记住:Channel不与数据打交道,它只负责运输数据。与数据打交道的是Buffer缓冲区image.png

 相对于传统IO而言,流是单向的。对于NIO而言,有了Channel管道这个概念,我们的读写都是双向的(铁路上的火车能从深圳去北京、自然就能从北京返还到深圳)

文章已被收录至官方知识档案java技能树NIONIO概述


相关文章
|
2月前
|
存储 缓存 Java
NIO-基础概念
NIO-基础概念
|
5月前
|
监控 网络协议 Java
Java一分钟之-Netty:高性能异步网络库
【6月更文挑战第11天】Netty是Java的高性能异步网络框架,基于NIO,以其高吞吐量、低延迟、灵活性和安全性受到青睐。常见问题包括内存泄漏、ChannelHandler滥用和异常处理不当。要规避这些问题,需正确释放ByteBuf,精简ChannelPipeline,妥善处理异常,并深入理解Netty原理。通过代码审查、遵循最佳实践和监控日志,可提升代码质量和性能。掌握Netty,打造高效网络服务。
86 2
|
缓存 安全 Java
NIO基础
三大组件 Channel & Buffer channel 有一点类似于 stream,它就是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前的 stream 要么是输入,要么是输出,channel 比 stream 更为底层 channel buffer 常见的 Channel 有 FileChannel DatagramChannel SocketChannel ServerSocketChannel buffer 则用来缓冲读写数据,常见的 buffer 有 ByteBuffer MappedByteB
40 0
|
缓存 安全 Java
netty概述
netty概述
160 0
|
缓存 网络协议 Java
Java NIO概述
Java NIO概述
|
网络协议 API
Netty 概述
Netty 是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端
139 0
Netty 概述
|
缓存 分布式计算 安全
Netty简单概述
本文开始给大家介绍Netty相关的内容,本篇主要介绍的是Netty概念性相关的内容
Netty简单概述
|
网络协议 Java
Java NIO系列教程(8)-SocketChannel的最佳实践(上)
Java NIO系列教程(8)-SocketChannel的最佳实践
458 0
|
Java
Java NIO系列教程(8)-SocketChannel的最佳实践(下)
Java NIO系列教程(8)-SocketChannel的最佳实践
184 0