没有合适的资源?快使用搜索试试~ 我知道了~
Java性能优化之使用NIO提升性能(Buffer和Channel)
1 下载量 134 浏览量
2021-01-27
11:24:26
上传
评论
收藏 307KB PDF 举报
温馨提示
试读
4页
在软件系统中,由于IO的速度要比内存慢,因此,I/O读写在很多场合都会成为系统的瓶颈。提升I/O速度,对提升系统整体性能有着很大的好处。在Java的标准I/O中,提供了基于流的I/O实现,即InputStream和OutputStream。这种基于流的实现以字节为单位处理数据,并且非常容易建立各种过滤器。NIO是NewI/O的简称,具有以下特性:为所有的原始类型提供(Buffer)缓存支持; 使用java.nio.charset.Charset作为字符集编码解码解决方案;
资源详情
资源评论
资源推荐
Java性能优化之使用性能优化之使用NIO提升性能(提升性能(Buffer和和Channel))
在软件系统中,由于IO的速度要比内存慢,因此,I/O读写在很多场合都会成为系统的瓶颈。提升I/O速度,对提升系统整体性
能有着很大的好处。
在Java的标准I/O中,提供了基于流的I/O实现,即InputStream和OutputStream。这种基于流的实现以字节为单位处理数据,
并且非常容易建立各种过滤器。
NIO是New I/O的简称,具有以下特性:
为所有的原始类型提供(Buffer)缓存支持;
使用 java.nio.charset.Charset 作为字符集编码解码解决方案;
增加通道(channel)对象,作为新的原始 I/O 抽象;
支持锁和内存映射文件的文件访问接口;
提供了基于 Selector 的异步网络 I/O。
与流式的 I/O 不同,NIO是基于块(Block)的,它以块为基本单位处理数据。在NIO中,最为重要的两个组件是缓冲 Buffer 和
通道 Channel 。缓冲是一块连续的内存块,是 NIO 读写数据的中转地。通道表示缓冲数据的源头或者目的地,它用于向缓冲
读取或者写入数据,是访问缓冲的接口。
1. NIO的Buffer类族和Channel
在NIO的实现中,Buffer是一个抽象类。JDK为每一种 Java 原生类型都创建了一个Buffer,如图
在NIO中和Buffer配合使用的还有 Channel 。Channel 是一个双向通道,即可读又可写。
下面列出Java NIO中最重要的集中Channel的实现:
FileChannel
DatagramChannel
SocketChannel
ServerSocketChannel
FileChannel用于文件的数据读写。DatagramChannel用于UDP的数据读写。SocketChannel用于TCP的数据读写。
ServerSocketChannel允许我们监听TCP链接请求,每个请求会创建一个SocketChannel.
应用程序只能通过Buffer对Channel进行读写。比如,在读一个Channel的时候,需要先将数据读入到相应的Buffer,然后在
Buffer中进行读取。
一个使用NIO进行文件复制的例子如下:
weixin_38730201
- 粉丝: 4
- 资源: 924
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0