NIO简介
来源:互联网 发布:网上订餐系统源码下载 编辑:程序博客网 时间:2024/05/21 09:23
NIO是在JDK 1.4中引入的,其目的是为了提高速度。java NIO包含了三个中重要的核心组件:Channels,Buffers,Selectors。
Channels和Buffers
通常来说,在NIO中所有的IO都是以Channels开始的。
Channels和Streams有些类似。区别如下:
1.Channels是双向的,可读可写,Streams是单向的,一个流要么是读入流,要么是写入流。
2.Channels可以异步读写。
3.数据从Channels读到Buffers,从Buffers写到Channels
一些主要的Channel:
FileCannel:从文件中读取和写入数据
DatagramChannel:在网络中通过UDP读写数据
SocketChannel:在网络中通过TCP读写数据
ServerSocketChannel:监听到来的TCP连接,比如网络服务连接。
一些主要的Buffer:
ByteBuffer
CharBuffer
FloatBuffer
DoubleBuffer
IntBuffer
ShortBuffer
LongBuffer
MappedByteBuffer
可以看到对于基本数据类型都有相应的Buffer,最后一个MappedByteBuffer用在内存映射文件上。
Selectors
Selector允许一个线程管理多个Channel,在多Channel的情况下非常方便,比如聊天服务。示意图如下(搬运工):
要使用Selector需要在Channel上注册,然后调用select()方法,此方法会阻塞直到注册Channel有返回的事件。比如网络连接,
数据接收等。
具体关于这些组件的细节,后面会介绍。
- nio简介
- NIO简介
- NIO简介
- NIO简介
- NIO-简介
- NIO简介
- 【NIO总结】—NIO简介
- Java NIO 之 NIO 简介
- NIO学习一、NIO简介
- Java NIO 基础简介
- java nio简介
- 主题:JAVA NIO 简介
- JAVA NIO 简介
- 主题:JAVA NIO 简介
- JAVA NIO 简介
- Java NIO简介
- JAVA NIO 简介
- 主题:JAVA NIO 简介
- Python学习记录-----批量发送post请求
- 18.判断出栈顺序是否正确?
- 网易2017实习生编程题—消除重复元素
- 组合模式
- LeetCode专栏L013_Roman_to_Integer
- NIO简介
- codeforces 560E Gerald and Giant Chess (dp + 组合数)
- vba 执行 *.py
- 树状数组
- java中Scanner类的简单用法分享
- hdu 2614 BEAT 回溯的dfs
- System Verilog视频学习笔记(6)- OOP-Encapsulation
- c++作业六
- Qt程序打包发布——插件发布