JDK源码分析之NIO类汇总

0.概述

标准的IO(BIO)基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。Java NIO可以让你非阻塞的使用IO,例如:当线程从通道读取数据到缓冲区时,线程还是可以进行其他事情。当数据被写入到缓冲区时,线程可以继续处理它。从缓冲区写入通道也类似。

Java NIO 由以下几个核心部分组成:Channels、Buffers、Selectors。虽然Java NIO 中除此之外还有很多类和组件,但Channel,Buffer 和 Selector 构成了核心的API。其它组件,如Pipe和FileLock,只不过是与三个核心组件共同使用的工具类。

1.NIO -Channel类图

NIO类图

1.1 同步非阻塞通道

FileChannel(文件通道)
SocketChannel(收发TCP包的通道)
ServerSocketChannel(收发TCP包的通道)
DatagramChannel(收发UDP包的通道)

1.2 异步非阻塞通道

AsynchronousFileChannel(异步文件通道)
AsynchronousSocketChannel(异步TCP通道)
AsynchronousServerSocketChannel(异步TCP通道)

1.3 管道

Pipe(管道)

1.4 接口

AsynchronousChannel(异步通道)
NetworkChannel(网络通道)
InterruptibleChannel(可中断通道)
WritableByteChannel(可写通道)
ReadableByteChannel(可读通道)

AsynchronousByteChannel(异步字节通道)
MulticastChannel(组播通道)
GatheringByteChannel(聚集通道)
ByteChannel(字节通道)
ScatteringByteChannel(分散通道)

SeekableByteChannel(可随机通道)

1.5 抽象类

AbstractInterruptibleChannel(可中断通道)
SelectableChannel(可选择通道)
AbstractSelectableChannel(可选择通道)

2.参考

http://ifeve.com/java-nio-all/