NIO入门
作者:互联网
本文主要为知识性、概念性介绍。NIO涉及的API较多,熟练使用需要大量的联系。可参考Java书籍推荐。
NIO1.0
NIO1.0是Java1.4(2002)引入的,主要特性如下:
- 进行异步I/O操作的缓冲区ByteBuffer等;
- 进行异步I/O操作的管道Pipe;
- 进行异步I/O操作(异步或同步)的Channel,包括ServerSocketChannel和SocketChannel;
- 多种字符集的编码能力和解码能力;
- 实现非阻塞I/O操作的多路复用器selector;
- 基于流行的Perl实现的正则表达式类库;
- 文件通道FileChannel。
NIO2.0
NIO2.0是Java1.7(2011.07)引入的,主要提供了:
- 提供能够批量获取文件属性的API,这些API具有平台无关性,不与特性的文件系统相耦合,另外它提供了标准文件系统的SPI,供各个服务提供商扩展实现;
- 提供AIO功能,支持基于文件的异步I/O操作和针对网络套接字的异步操作;
- 完成JSR-51定义的通道功能,包括对配置和多播数据报的支持等。
AsynchronousChannel接口的主要作用是使通道支持异步I/O操作。
异步I/O操作有以下两种方式进行实现。
(1)方法
Future<V> operation(...)
operation代表I/O操作的名称,大多数都是读或写操作。泛型变量V代表经过I/O操作后返回结果的数据类型。使用Future对象可以用于检测I/O操作是否完成,或者等待完成,以及用于接收I/O操作处理后的结果。
(2)回调
void operation(... A attachment, CompletionHandler<V,? super A> handler)
A类型的对象attachment的主要作用是让外部与CompletionHandler对象内部进行通信。使用CompletionHandler回调的方式实现异步I/O操作的优点是CompletionHandler对象可以被复用。当I/O操作成功或失败时,CompletionHandler对象中的指定方法会被调用。
标签:异步,NIO,对象,CompletionHandler,API,操作,operation,入门 来源: https://www.cnblogs.com/blouson/p/NIO.html