【NIO总结】—NIO简介
来源:互联网 发布:知乎零食网店 编辑:程序博客网 时间:2024/06/08 08:19
NIO是JDK1.4提供的新的IO API,可以代替原来标准的IO API。NIO被称为New IO,又称NonBlocking IO,它和原来的IO有同样的作用和目的,但是使用方式完全不同。NIO对文件的读写操作会更快,因为NIO是面向缓冲区的、基于通道的IO操作。
NIO和IO的区别
IO操作是面向流的,文件的读写都要通过流的形式进行,比如FileInputStream和FileOutputStream;而且它的访问是阻塞的,当程序要访问文件时,如果文件尚未就绪,该线程就会发生阻塞,直至数据准备就绪位置,否则一直等在那里。
但是NIO不会,NIO是面向缓冲区的,它是基于通道操作的。当访问数据时,如果数据没有准备就绪,缓冲区会直接返回,不会一直等待数据就绪。NIO访问数据时,会首先创建一个通道,通道不存储数据,只用来传输;缓冲区是用来存储数据的,它既可以从程序到硬盘文件,也可以从硬盘文件到程序。不仅仅是因为NIO面向缓冲区、基于通道它就可以完全做到非阻塞,而是需要选择器。程序访问时,会将channel注册到选择器上,并监听选择器事件,当事件发生时,才会执行数据操作,而选择器可以注册多个通道,一个通道也可以监听多个选择器事件。
NIO核心内容
从NIO和IO的区别可以看出,NIO系统的核心在于通道(Channel)、缓冲区(Buffer)和选择器(Selector)。
通道:通道表示打开到IO设备(例如:文件、套接字)的连接,如果需要访问某个文件,需要该文件开启通道,相当于打开可以访问的开关。
缓冲区:缓冲区就像一个数组,可以保存多个相同类型的数据,它是一个容器,在NIO系统中主要用于和通道进行交互。数据从通道读入缓冲区,从缓冲区写入通道。
选择器:选择器是SelectableChannel对象的多路复用器,Selector可以同时监控多个SelectableChannel的IO状况,也就是说,利用Selector可以使一个单独的线程管理多个Channel,Selector是非阻塞IO的核心。
- 【NIO总结】—NIO简介
- Java NIO——1 NIO简介
- nio简介
- NIO简介
- NIO简介
- NIO简介
- NIO-简介
- NIO简介
- 【NIO总结】—NIO中的缓冲区
- 【NIO总结】—NIO中的通道
- java NIO——简介
- Java NIO 之 NIO 简介
- NIO学习一、NIO简介
- NIO 总结
- NIO总结
- NIO总结
- nio
- NIO
- 网络套接字编程基本api
- losesea
- spring-boot入门(一)
- jsp基础知识
- Git 常用命令集合
- 【NIO总结】—NIO简介
- 解决 Webpack "Invalid Host Header"
- Android6.0修改以太网IP
- Unable to load native-hadoop library for your...问题详解
- C程序题1
- 动态规划8:最优编辑str1-->str2
- 看懂中国人工智能格局,这一篇就够了
- 二叉树层次遍历c++实现
- NOI2017 滚出记