See: 描述
接口 | 描述 |
---|---|
AsynchronousByteChannel |
一个可以读写字节的异步通道。
|
AsynchronousChannel |
支持异步I / O操作的通道。
|
ByteChannel |
一个可以读写字节的通道。
|
Channel |
I / O操作的联系。
|
CompletionHandler<V,A> |
用于消除异步I / O操作结果的处理程序。
|
GatheringByteChannel |
可以从缓冲区序列中写入字节的通道。
|
InterruptibleChannel |
可以异步关闭和中断的通道。
|
MulticastChannel |
支持互联网协议(IP)组播的网络通道。
|
NetworkChannel |
到网络插座的通道。
|
ReadableByteChannel |
一个可以读取字节的通道。
|
ScatteringByteChannel |
可以将字节读入缓冲区序列的通道。
|
SeekableByteChannel |
保持当前
位置并允许更改
位置的字节通道。
|
WritableByteChannel |
一个可以写字节的通道。
|
类 | 描述 |
---|---|
AsynchronousChannelGroup |
用于资源共享的一组异步通道。
|
AsynchronousFileChannel |
用于读取,写入和操作文件的异步通道。
|
AsynchronousServerSocketChannel |
用于面向流的侦听套接字的异步通道。
|
AsynchronousSocketChannel |
用于面向流的连接插座的异步通道。
|
Channels |
通道和流的实用方法。
|
DatagramChannel |
面向数据报的套接字的可选通道。
|
FileChannel |
用于读取,写入,映射和操作文件的通道。
|
FileChannel.MapMode |
文件映射模式的类型安全枚举。
|
FileLock |
表示文件区域上的锁的令牌。
|
MembershipKey |
代表互联网协议(IP)组播组成员身份的令牌。
|
Pipe |
实现单向管道的一对通道。
|
Pipe.SinkChannel |
一个代表 Pipe 可写端的通道 。
|
Pipe.SourceChannel |
代表 Pipe 的可读端的通道 。
|
SelectableChannel |
可通过 Selector 复用的通道 。
|
SelectionKey |
一个表示一个 SelectableChannel 与Selector 注册的令牌 。
|
Selector | |
ServerSocketChannel |
用于面向流的侦听套接字的可选通道。
|
SocketChannel |
用于面向流的连接插座的可选通道。
|
异常 | 描述 |
---|---|
AcceptPendingException |
当尝试在通道上启动接受操作并且先前的接受操作尚未完成时抛出未检查的异常。
|
AlreadyBoundException |
尝试将套接字绑定到已绑定的面向网络的通道时抛出未经检查的异常。
|
AlreadyConnectedException |
尝试连接已连接的 SocketChannel 时 ,会引发未检查的异常。
|
AsynchronousCloseException |
当线程在I / O操作中关闭通道或阻塞其通道的部分时,由线程检查异常。
|
CancelledKeyException |
当试图使用不再有效的选择键时抛出未检查的异常。
|
ClosedByInterruptException |
另一个线程在通道上的I / O操作中被阻塞时,由线程接收到的异常检查。
|
ClosedChannelException |
当尝试在关闭或至少关闭该操作的通道上调用或完成I / O操作时,检查的异常抛出。
|
ClosedSelectorException |
尝试在闭合选择器上调用I / O操作时抛出未检查的异常。
|
ConnectionPendingException |
当尝试连接未阻塞连接操作的 SocketChannel 时,引发未检查的异常。
|
FileLockInterruptionException |
另一个线程在等待获取文件锁时中断它时线程接收到的异常检查。
|
IllegalBlockingModeException |
当在不正确的阻塞模式下在通道上调用特定于阻止模式的操作时抛出未检查的异常。
|
IllegalChannelGroupException |
尝试打开不是由同一提供商创建的组中的通道时抛出未检查的异常。
|
IllegalSelectorException |
当尝试向创建该通道的提供商创建的选择器注册一个通道时抛出未检查的异常。
|
InterruptedByTimeoutException |
在异步操作完成之前经过一段时间后线程接收到的异常检查。
|
NoConnectionPendingException |
当未经检查的异常 finishConnect 一个的方法SocketChannel 没有首先成功调用被调用connect 方法。
|
NonReadableChannelException |
尝试从最初打开阅读的频道中读取时未抛出的异常。
|
NonWritableChannelException |
尝试写入最初未打开的通道进行写入时抛出未检查的异常。
|
NotYetBoundException |
尝试在尚未绑定的服务器套接字通道上调用I / O操作时抛出未检查的异常。
|
NotYetConnectedException |
当尝试在尚未连接的套接字通道上调用I / O操作时抛出未检查的异常。
|
OverlappingFileLockException |
当尝试获取与已经被同一Java虚拟机锁定的区域重叠的文件的区域上,或者当另一个线程已经在等待锁定同一文件的重叠区域时尝试获取未锁定的异常。
|
ReadPendingException |
尝试从异步套接字通道读取并且之前的读取尚未完成时抛出未检查的异常。
|
ShutdownChannelGroupException |
当尝试构造一个关闭组的通道或I / O操作的完成处理程序无法调用时,抛出未检查的异常,因为通道组已终止。
|
UnresolvedAddressException |
尝试在未解析的套接字地址上调用网络操作时抛出未检查的异常。
|
UnsupportedAddressTypeException |
尝试绑定或连接到不支持的类型的套接字地址时抛出未检查的异常。
|
WritePendingException |
当尝试写入异步套接字通道并且以前的写入尚未完成时抛出未检查的异常。
|
Channels 描述 Channel
A nexus for I/O operations ReadableByteChannel
Can read into a buffer ScatteringByteChannel
Can read into a sequence of buffers WritableByteChannel
Can write from a buffer GatheringByteChannel
Can write from a sequence of buffers ByteChannel
Can read/write to/from a buffer SeekableByteChannel
A ByteChannel
connected to an entity that contains a variable-length sequence of bytesAsynchronousChannel
Supports asynchronous I/O operations. AsynchronousByteChannel
Can read and write bytes asynchronously NetworkChannel
A channel to a network socket MulticastChannel
Can join Internet Protocol (IP) multicast groups Channels
Utility methods for channel/stream interoperation
信道表示与诸如硬件设备,文件,网络套接字或能够执行一个或多个不同I / O操作(例如读取或写入)的程序组件的实体的开放连接。 如Channel
接口中所规定的 ,通道是打开的或是关闭的,它们都是异步关闭和可中断的 。
Channel
接口由其他几个接口扩展。
ReadableByteChannel
接口指定read
方法,将字节从通道读入缓冲区; 类似地, WritableByteChannel
接口指定了一种从缓冲区向通道写入字节的write
方法。 ByteChannel
接口将这两个接口统一起来,用于可以读取和写入字节的通道的常见情况。 SeekableByteChannel
接口将ByteChannel
接口与方法扩展到query
和modify
通道的当前位置,其size
。
ScatteringByteChannel
和GatheringByteChannel
接口分别扩展了ReadableByteChannel
和WritableByteChannel
接口,添加了read
和write
方法, 这些方法采用缓冲区序列而不是单个缓冲区。
NetworkChannel
接口规定了方法bind
通道的套接字,获取套接字所绑定的地址,以及get
和set
套接字选项的方法。 MulticastChannel
接口指定加入Internet协议(IP)组播组的方法。
Channels
实用程序类定义了支持java.io
包的流类与此包的通道类的互操作的静态方法。 可以从InputStream
或OutputStream
构建适当的信道, 相反地 ,可以从信道构造InputStream
或OutputStream
。 甲Reader
可以构建使用给定的字符集,以字节从一个给定的读取字节通道解码,并且相反地一个Writer
可以构造使用给定的字符集的字符编码成字节并将其写入到一个可写的给定信道的字节。
File channels 描述 FileChannel
Reads, writes, maps, and manipulates files FileLock
A lock on a (region of a) file MappedByteBuffer
A direct byte buffer mapped to a region of a file
FileChannel
类支持从连接到文件的通道读取字节和写入字节的通常操作,以及查询和修改当前文件位置以及将文件截断为特定大小的操作。 它定义了在整个文件或文件的特定区域上获取锁的方法; 这些方法返回FileLock
类的实例。 最后,它定义了强制更新要写入到其中的存储设备的文件的方法,用于在文件和其他通道之间高效传输字节,并将文件的一个区域直接映射到内存中。
A FileChannel
是通过调用其静态open
方法之一或通过调用FileInputStream
,FileOutputStream
或RandomAccessFile
的 FileOutputStream
或RandomAccessFile
的getChannel
方法来创建的 ,以返回连接到与java.io
类相同的底层文件的文件通道。
Multiplexed, non-blocking I/O 描述
SelectableChannel
A channel that can be multiplexed DatagramChannel
A channel to a datagram-oriented socket Pipe.SinkChannel
The write end of a pipe Pipe.SourceChannel
The read end of a pipe ServerSocketChannel
A channel to a stream-oriented listening socket SocketChannel
A channel for a stream-oriented connecting socket Selector
A multiplexor of selectable channels SelectionKey
A token representing the registration
of a channel with a selectorPipe
Two channels that form a unidirectional pipe
多路复用的非阻塞I / O由选择器 , 可选择的通道和选择键提供,它比面向线程的阻塞I / O更加可扩展。
A selector是selectable channels的多路复用器 ,其又是可以放入non-blocking mode的特殊类型的信道。 要执行多路复用I / O操作,首先创建一个或多个可选通道,进入非阻塞模式,并选择registered
。 注册信道指定一组将用于由选择器准备进行测试I / O操作,并且返回一个selection key表示的注册。
一旦有些频道已经向选择器注册,一个selection operation能够以发现哪些渠道,如果有的话,已经成为准备执行其权益以前曾宣布的操作的一个或多个进行。 如果通道准备就绪,则在注册时返回的密钥将被添加到选择器的选定密钥集中 。 可以检查密钥集合及其中的密钥,以确定每个信道准备好的操作。 从每个密钥可以检索相应的通道,以执行所需的任何I / O操作。
选择键指示其通道准备好进行某些操作是一个提示,但不是保证,这样的操作可以由线程执行而不会导致线程阻塞。 执行复用I / O的代码必须被写入,以便在证明不正确时忽略这些提示。
这个包定义对应于所述选择的信道的类DatagramSocket
, ServerSocket
和Socket
中java.net
包中定义的类。 为了支持与通道相关的套接字,已经对这些类进行了微小的更改。 该包还定义了一个实现单向管道的简单类。 在所有情况下,通过调用相应类的静态open方法创建一个新的可选通道。 如果一个通道需要相关的套接字,那么将创建一个套接字作为此操作的副作用。
可以通过“插入” java.nio.channels.spi
包中定义的SelectorProvider
类的替代定义或实例来替换选择器,可选通道和选择键的实现 。 预计很多开发人员实际上不会使用这个设施; 它主要提供,以便在需要非常高的性能时,复杂的用户可以利用操作系统特定的I / O复用机制。
多执行复用的I / O抽象所需的簿记和同步是由执行AbstractInterruptibleChannel
, AbstractSelectableChannel
, AbstractSelectionKey
和AbstractSelector
类在java.nio.channels.spi
包。 定义自定义选择器提供者时,只能将AbstractSelector
和AbstractSelectionKey
类直接进行子类化; 自定义渠道类应该扩展此包中定义的适当的SelectableChannel
子类。
Asynchronous I/O 描述 AsynchronousFileChannel
An asynchronous channel for reading, writing, and manipulating a file AsynchronousSocketChannel
An asynchronous channel to a stream-oriented connecting socket AsynchronousServerSocketChannel
An asynchronous channel to a stream-oriented listening socket CompletionHandler
A handler for consuming the result of an asynchronous operation AsynchronousChannelGroup
A grouping of asynchronous channels for the purpose of resource sharing
Asynchronous channels
是能够进行异步I / O操作的特殊类型的通道。 异步通道是非阻塞的,并且定义了启动异步操作的方法,返回代表每个操作的待处理结果的Future
。 Future
可以用于轮询或等待操作的结果。 异步I / O操作还可以指定在操作完成时调用的CompletionHandler
。 完成处理程序是用户提供的代码,用于执行以消耗I / O操作的结果。
此包定义了连接到面向流的连接或侦听套接字或面向数据包的套接字的异步通道类。 它还定义了用于异步读取,写入和操作文件的AsynchronousFileChannel
类。 与FileChannel
一样,它支持将文件截断为特定大小的操作,强制更新要写入存储设备的文件,或获取整个文件或文件特定区域上的锁定。 与FileChannel
不同,它没有定义将文件区域直接映射到内存的方法。 在需要内存映射的I / O的情况下,可以使用FileChannel
。
为了资源共享的目的,异步信道被绑定到异步信道组。 一个组有一个相关联的ExecutorService
,其中提交任务来处理I / O事件,并发送到完成处理程序,这些处理程序消耗在组中的通道上执行的异步操作的结果。 可以在创建频道时指定组,也可以将频道绑定到默认组 。 复杂的用户可能希望创建自己的异步通道组或配置将用于默认组的ExecutorService
。
与选择器一样,异步通道的实现可以被替换为“插入” java.nio.channels.spi
包中定义的AsynchronousChannelProvider
类的替代定义或实例。 预计很多开发人员实际上不会使用这个设施; 主要提供这样的功能,以便在需要非常高的性能时,复杂的用户可以利用操作系统特定的异步I / O机制。
除非另有说明,否则将null参数传递给此程序包中任何类或接口中的构造函数或方法将导致抛出NullPointerException
。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.