Java NIO -基础认知
来源:互联网 发布:台风莫兰蒂数据 编辑:程序博客网 时间:2024/05/22 06:19
Java NIO (New IO) is an alternative IO API for Java (from Java 1.4), meaning alternative to the standard Java IO and Java Networking API’s. Java NIO offers a different way of working with IO than the standard IO API’s.
如上所见,在Java1.4之后出现了NIO代替了IO,不过JavaNIO与IO是两种不同的工作方式哦,所以还是看看吧。
一、组成部分
组成:
1. Channel
2. Buffer
3. Selector
4. Pipe
5. FileLock
前三个是核心组件,这些构成了核心的API,剩余的组件不过是其他三个组件工具类。
二、Channel(通道)
所有的IO在NIO中都是从Channel开始的。
Channel有点像流,数据可以从Channel读到Buffer,也可以从Buffer写到Channel。
java NIO的通道类似于流,但又与流不同:
1.)通道即可以读取数据,也可以写入数据,但流的读写通常是分开的。
2.)通道可以异步的读写。
3.)通道中的数据总是先读到一个Buffer,或者从一个Buffer中写入。
Channel的实现:
1. FileChannel:从文件中读写数据。
2. DatagramChannel:通过UDP读写网络中的数据
3. DatagramChannel:可以监听新进来的TCP连接,像Web服务器那样。
4. SocketChannel:通过TCP读写网络中的数据
这些通道涵盖了UDP、TCP网络IO和文件IO,还有一些其他的接口。
三、Buffer(缓冲)
JAVA NIO中的Buffer用于和NIO通道进行交互,数据从通道读入缓存区,从缓存区写入通道。
缓冲区本质上是一块可以写入数据,也可以读出数据的内存,这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的调用该块内存。
Buffer的实现:
1. ByteBuffer
2. CharBuffer
3. DoubleBuffer
4. FloatBuffer
5. IntBuffer
6. LongBuffer
7. ShortBuffer
8. MappedByteBuffer
这些Buffer涵盖了你能通过IO所能传送的所有数据类型:short、int、long、byte、char、float、double,还有一个MappedByteBuffer,这个是用于表示内存映射文件。
四、Selector(选择)
是指数据从一个Channel读取到多个Buffer中。
Selector允许单线程处理多个Channel。
要使用Selector,必须向Selector注册Channel,然后调用它的select()方法!
这个方法会一直阻塞到某个注册的通道有事件就绪,线程可以处理这些事,如数据连接,数据接收等。
- Java NIO -基础认知
- Java BIO、NIO、AIO 认知
- java基础-java体系认知
- Java NIO:一、NIO基础
- 【java基础】java NIO
- Java NIO 基础简介
- JAVA NIO 基础
- java NIO基础概念
- java nio 基础
- java NIO基础
- Java NIO基础概念
- java nio基础
- java nio 缓冲区基础
- java nio 基础(二)
- java nio基础一
- java nio基础二
- java nio基础三
- java nio基础四
- Python培训机构学员感悟
- http与Socket区别
- Labview通过RS422通讯接口PC与下位机通信
- Swift 项目中可能用到的第三方框架
- idea使用笔记
- Java NIO -基础认知
- JDK源码分析之String(一)
- JS横竖屏检测
- redis的简单理解
- C# 16进制与字符串、字节数组之间的转换
- 正则表达式总结(持续更新中...)
- ccf 出现次数最多的数 java 思路
- 【51nod1265】—四点共面
- Android之用adb命令快速获取手机IP方法总结