public interface AsynchronousByteChannel extends AsynchronousChannel
某些频道可能不允许超过一个读或写在任何给定的时间突出。如果一个线程调用读取方法以前的读操作之前完成然后ReadPendingException
将抛出。同样,如果一个方法被调用之前写一写了那么WritePendingException
抛出。是否其他类型的I / O操作可以同时进行一个读操作取决于信道的类型。
注意,ByteBuffers
不安全使用多线程并发。当一个读或写操作开始,然后必须小心,以确保缓冲区是不访问,直到操作完成。
Modifier and Type | Method and Description |
---|---|
Future<Integer> |
read(ByteBuffer dst)
从这个通道读取一个字节序列到给定的缓冲区中。
|
<A> void |
read(ByteBuffer dst, A attachment, CompletionHandler<Integer,? super A> handler)
从这个通道读取一个字节序列到给定的缓冲区中。
|
Future<Integer> |
write(ByteBuffer src)
从给定的缓冲区中写入该通道的一个字节序列。
|
<A> void |
write(ByteBuffer src, A attachment, CompletionHandler<Integer,? super A> handler)
从给定的缓冲区中写入该通道的一个字节序列。
|
close
<A> void read(ByteBuffer dst, A attachment, CompletionHandler<Integer,? super A> handler)
此方法启动一个异步读操作,从这个通道读取一个字节的序列到给定的缓冲区中。的handler
参数完成处理程序被调用的读操作完成时(或失败)。结果通过完成处理程序读取的字节或字节-1
如果不可以因为信已经达到结束流数。
读操作可以读到R字节从通道,其中R为剩余的缓冲区中的字节数,即,在时间dst.remaining()
,尝试读取。其中R为0,读操作完成,立即用结果没有发起一个I/O操作的0
。
假设一个长度字节序列N是阅读,在0 < N <= R.这个字节序列将被转移到缓冲区,序列中的第一个字节在指数P和最后一个字节在指数P + N - 1,其中P是缓冲区的位置,此时读取执行。建成后的缓冲区的位置将等于P + N;极限将不会改变。
缓冲区是不安全的,使用多个并发线程,所以应注意不访问缓冲区,直到操作完成。
这种方法可能在任何时候被调用。某些信道类型可能不允许在任何给定时间内突出的多个读。如果一个线程启动一个读操作之前的读操作之前完成然后ReadPendingException
将抛出。
A
-附件的类型
dst
-缓冲区中的字节都被转移
attachment
-连接到I/O操作的对象;可以
null
handler
-完成处理程序
IllegalArgumentException
-如果缓冲区是只读的
ReadPendingException
如果通道不允许多个读的是优秀的和以前的阅读没有完成
ShutdownChannelGroupException
如果通道是一个
group
已经终止的相关
Future<Integer> read(ByteBuffer dst)
此方法启动一个异步读操作,从这个通道读取一个字节的序列到给定的缓冲区中。该方法的行为以同样的方式方法的read(ByteBuffer,Object,CompletionHandler)
不是指定完成处理,该方法返回一个Future
表示等待结果。的Future
的get
方法返回读取的字节或字节-1
如果不可以因为信已经达到结束流数。
dst
-缓冲区中的字节都被转移
IllegalArgumentException
-如果缓冲区是只读的
ReadPendingException
如果通道不允许多个读的是优秀的和以前的阅读没有完成
<A> void write(ByteBuffer src, A attachment, CompletionHandler<Integer,? super A> handler)
此方法启动一个异步写操作,从给定的缓冲区写一个字节的序列到这个通道。的handler
参数是一个结束处理程序被调用时,写操作完成(或失败)。传递给完成处理程序的结果是写入的字节数。
写操作可以写上R字节通道,其中R为剩余的缓冲区中的字节数,即,src.remaining()
当时写的尝试。其中R为0,写操作完成,立即用结果没有发起一个I/O操作的0
。
假设一个字节序列的长度N是书面的,在0 < N <= R.这个字节序列将被从缓冲区开始在指数P转移,其中P是缓冲区的位置,此时写入;的最后一个字节写的指标将P + n - 1。建成后的缓冲区的位置将等于P + N;极限将不会改变。
缓冲区是不安全的,使用多个并发线程,所以应注意不访问缓冲区,直到操作完成。
这种方法可能在任何时候被调用。某些信道类型可能不允许在给定时间内超过一个写的突出部分。如果一个线程启动写操作之前的写操作之前完成然后WritePendingException
将抛出。
A
-附件的类型
src
-缓冲器字节进行检索
attachment
-连接到I/O操作的对象;可以
null
handler
-完成处理程序对象
WritePendingException
如果通道不允许超过一个写是杰出的和以前写的未完成
ShutdownChannelGroupException
如果通道是一个
group
已经终止的相关
Future<Integer> write(ByteBuffer src)
此方法启动一个异步写操作,从给定的缓冲区写一个字节的序列到这个通道。该方法具有完全相同的方式,但不是指定的write(ByteBuffer,Object,CompletionHandler)
完成处理程序的方法,该方法返回一个Future
表示等待结果。的Future
的get
方法返回写入的字节数。
src
-缓冲器字节进行检索
WritePendingException
如果通道不允许超过一个写是杰出的和以前写的未完成
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.