IAsynchronousChannel 接口

定义

支持异步 I/O 操作的通道。

[Android.Runtime.Register("java/nio/channels/AsynchronousChannel", "", "Java.Nio.Channels.IAsynchronousChannelInvoker", ApiSince=26)]
public interface IAsynchronousChannel : IDisposable, Java.Interop.IJavaPeerable, Java.Nio.Channels.IChannel
[<Android.Runtime.Register("java/nio/channels/AsynchronousChannel", "", "Java.Nio.Channels.IAsynchronousChannelInvoker", ApiSince=26)>]
type IAsynchronousChannel = interface
    interface IChannel
    interface ICloseable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
派生
属性
实现

注解

支持异步 I/O 操作的通道。 异步 I/O 操作通常采用以下两种形式之一:

<ol><li>

{@link Future}&lt;V&gt; <em>operation</em>(<em>...</em>)

</li li><>

void <em>operation</em>(<em>...</em> A attachment, {@link
              CompletionHandler}&lt;V,? super A&gt; handler)

</li></ol>

其中 操作是 I/O 操作 的名称(例如读取或写入), V 是 I/O 操作的结果类型, A 是附加到 I/O 操作的对象的类型,以便在使用结果时提供上下文。 附件对于使用 em 无状态</em>CompletionHandler 来使用许多 I/O 操作的结果的情况<>非常重要。

在第一种形式中,接口定义的 Future Future 方法可用于检查操作是否已完成、等待其完成以及检索结果。 在第二种形式中,调用 a CompletionHandler 以在 I/O 操作完成或失败时使用 I/O 操作的结果。

实现此接口的通道是<>异步可<关闭的/em>:如果通道上的 I/O 操作未完成并且调用通道#close close的方法,则 I/O 操作将失败,但异常AsynchronousCloseException

异步通道可供多个并发线程使用。 某些通道实现可能支持并发读取和写入,但可能不允许在任何给定时间完成多个读取和一个写入操作。

<h2>Cancellation</h2>

Future 接口定义 Future#cancel cancel 取消执行的方法。 这会导致所有等待 I/O 操作结果的线程引发 java.util.concurrent.CancellationException。 是否可以取消基础 I/O 操作是高度具体的实现,因此未指定。 如果取消离开通道或其连接的实体处于不一致状态,则该通道将置于实现特定的 <em 错误状态</em> 中,从而阻止进一步尝试启动与取消的操作类似的 I/O 操作>。 例如,如果读取操作被取消,但实现无法保证尚未从通道读取字节,则它将通道置于错误状态;进一 read 步尝试启动操作会导致引发未指定的运行时异常。 同样,如果写入操作被取消,但实现无法保证尚未写入通道的字节,则后续尝试启动写入 write 操作将失败并出现未指定的运行时异常。

Future#cancel cancel使用参数设置为 true 调用mayInterruptIfRunning该方法时,I/O 操作可能会通过关闭通道中断。 在这种情况下,所有等待 I/O 操作结果的线程都会引发 CancellationException ,通道上 AsynchronousCloseException未完成的任何其他 I/O 操作除外。

cancel如果调用该方法以取消读取或写入操作,则建议放弃 I/O 操作中使用的所有缓冲区或小心,以确保在通道保持打开状态时不会访问缓冲区。

已在 1.7 中添加。

适用于 . 的 java.nio.channels.AsynchronousChannelJava 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

属性

Handle

获取基础 Android 对象的 JNI 值。

(继承自 IJavaObject)
IsOpen

如果此通道处于打开状态,则返回 true。

(继承自 IChannel)
JniIdentityHashCode

返回包装实例的值 java.lang.System.identityHashCode()

(继承自 IJavaPeerable)
JniManagedPeerState

托管对等方的状态。

(继承自 IJavaPeerable)
JniPeerMembers

成员访问和调用支持。

(继承自 IJavaPeerable)
PeerReference

返回 JniObjectReference 包装的 Java 对象实例。

(继承自 IJavaPeerable)

方法

Close()

关闭此通道。

Disposed()

在释放实例时调用。

(继承自 IJavaPeerable)
DisposeUnlessReferenced()

如果没有对此实例的未完成引用,则调用 Dispose();否则不执行任何操作。

(继承自 IJavaPeerable)
Finalized()

在实例完成时调用。

(继承自 IJavaPeerable)
SetJniIdentityHashCode(Int32)

设置由 JniIdentityHashCode. 返回的值。

(继承自 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

支持异步 I/O 操作的通道。

(继承自 IJavaPeerable)
SetPeerReference(JniObjectReference)

设置由 PeerReference. 返回的值。

(继承自 IJavaPeerable)
UnregisterFromRuntime()

取消注册此实例,以便运行时不会从将来 Java.Interop.JniRuntime+JniValueManager.PeekValue 的调用中返回它。

(继承自 IJavaPeerable)

扩展方法

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

支持异步 I/O 操作的通道。

GetJniTypeName(IJavaPeerable)

支持异步 I/O 操作的通道。

适用于