《Java NIO》学习笔记一 NIO与标准I/O比较
来源:互联网 发布:excel数据上下颠倒 编辑:程序博客网 时间:2024/05/22 05:03
首先先与标准I/O做个比较,这样更容易看出NIO的特点:
NIO包(java.nio.*)引入了四个关键的抽象数据类型,它们共同解决传统的I/O类中的一些问题。
1、Buffer:它是包含数据且用于读写的线形表结构。其中还提供了一个特殊类用于内存映射文件的I/O操作。
2、Charset:它提供Unicode字符串影射到字节序列以及逆影射的操作。
3、Channels:包含socket,file和pipe三种管道,它实际上是双向交流的通道。
4、Selector:它将多元异步I/O操作集中到一个或多个线程中。
两者比较:
1、数据的读写操作
标准的IO是基于字节流和字符流进行操作的,它不能前后移动流中的数据,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作的,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中,需要时可以在缓冲区中前后移动所保存的数据。
2、非阻塞
在标准IO的Socket编程中,套接字的某些操作可能会造成阻塞:accept()方法的调用可能会因为等待一个客户端连接而阻塞,read()方法也可能会因为没有数据可读而阻塞,write()方法在数据没有完全写入时也可能会发生阻塞,阻塞发生时,该线程被挂起,什么也干不了。
而在基于NIO的TCP通信中,具有非阻塞的特点,非阻塞网络IO的特点简单的说就是:线程在等待连接,写数据等(标准IO中的阻塞操作)的同时,也可以做其他事情,这便实现了线程的异步操作。
3、选择器
Java NIO引入了选择器的概念,选择器可以监听多个通道的事件(比如:连接打开,数据到达)。因此,单个的线程可以监听多个数据通道,这也是非阻塞IO的核心。而在标准IO的Socket编程中,单个线程则只能在一个端口监听。
- 《Java NIO》学习笔记一 NIO与标准I/O比较
- java I/O学习笔记3 ---NIO
- Java学习笔记(57)------------NIO:浅析I/O模型
- Java I/O(一) NIO概述
- NIO学习笔记:浅析I/O模型
- Java I/O模型与NIO解析
- java nio 传统标准io socket 和nio socket比较与学习
- Java: NIO(new I/O)
- NIO(java new I/O)
- Netty 权威指南笔记(一):网络 I/O 模型和 Java NIO 入门
- NIO学习笔记(1)--非阻塞I/O
- NIO学习笔记——操作系统与I/O交互简介
- 疯狂Java学习笔记(57)------------NIO:浅析I/O模型
- Java NIO学习笔记一(IO VS NIO)
- 深入I/O学习记录-02java NIO工作机制
- NIO学习笔记(一)
- NIO学习笔记一
- NIO知识一 Java NIO(New I/O)的三个属性position、limit、capacity
- IIS配置虚拟目录指向局域网中共享的物理路径方法。
- Myeclise 修改jdk版本问题
- iOS-浅谈runtime运行时机制01-类与对象的内部结构
- Hibernate 中 Criteria 的完整用法
- 大话Fragment管理
- 《Java NIO》学习笔记一 NIO与标准I/O比较
- Tomcat中配置下载文件类型
- 1 assert/signal failures have occurred; MATLAB will abort in 10 seconds
- TOMCAT启动完成但是ECLIPSE仍然显示starting....
- 直方图的均衡、直方图的反向投影算法,opencv鼠标和键盘处理事件
- iOS-浅谈runtime运行时机制02-runtime简单使用
- [你必须知道的异步编程]C# 5.0 新特性——Async和Await使异步编程更简单
- hdu4046 不错的线段树单点更新
- shell编程总结