Language

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 操作は、通常、次の 2 つの形式のいずれかを使用します。

<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>state-less</em>CompletionHandler を使用して多数の I/O 操作の結果を使用する場合に重要です。

最初の形式では、 Future Future インターフェイスによって定義されたメソッドを使用して、操作が完了したかどうかを確認し、その完了を待ち、結果を取得できます。 2 番目の形式では、完了または失敗したときに I/O 操作の結果を使用する CompletionHandler が呼び出されます。

このインターフェイスを実装するチャネルは、 <em>asynchronously closeable</em>: チャネルで I/O 操作が未処理で、チャネルの #close close メソッドが呼び出されると、I/O 操作は例外 AsynchronousCloseExceptionで失敗します。

非同期チャネルは、複数の同時実行スレッドで安全に使用できます。 一部のチャネル実装では、同時読み取りと書き込みをサポートできますが、特定の時点で複数の読み取りと 1 つの書き込み操作を未処理にすることはできません。

<h2>Cancellation</h2>

Future インターフェイスは、実行を取り消すFuture#cancel cancel メソッドを定義します。 これにより、I/O 操作の結果を待機しているすべてのスレッドが java.util.concurrent.CancellationExceptionをスローします。 基になる I/O 操作を取り消すことができるかどうかは、実装固有であるため、指定されていません。 取り消しによってチャネルまたは接続先エンティティが不整合な状態になる場合、チャネルは実装固有の <em>error state</em> に配置されます。これにより、取り消された操作と 同様 の I/O 操作をさらに開始できなくなります。 たとえば、読み取り操作が取り消されても、実装がチャネルからバイトが読み取られないことを保証できない場合、チャネルはエラー状態になります。さらに read 操作を開始しようとすると、指定されていないランタイム例外がスローされます。 同様に、書き込み操作が取り消されても、実装がチャネルにバイトが書き込まれていないことを保証できない場合、後続の write の開始の試行は、指定されていないランタイム例外で失敗します。

Future#cancel cancel パラメーターを mayInterruptIfRunning に設定して true メソッドを呼び出した場合、チャネルを閉じることによって I/O 操作が中断される可能性があります。 その場合、I/O 操作の結果を待機しているすべてのスレッドは CancellationException をスローし、チャネルで未処理の他の I/O 操作は例外 AsynchronousCloseExceptionで完了します。

読み取り操作または書き込み操作を取り消すために cancel メソッドを呼び出す場合は、I/O 操作で使用されるすべてのバッファーを破棄するか、チャネルを開いたままでバッファーにアクセスしないように注意することをお勧めします。

1.7 で追加されました。

java.nio.channels.AsynchronousChannelの Java ドキュメント。

このページの一部は、Androidオープンソースプロジェクトによって作成および共有された作業に基づく変更でありCreative Commons 2.5属性ライセンスに記載されている条件に従って使用されます。

プロパティ

名前 説明
Handle

基になる Android オブジェクトの JNI 値を取得します。

(継承元 IJavaObject)
IsOpen

このチャネルが開いている場合は true を返します。

(継承元 IChannel)
JniIdentityHashCode

ラップされたインスタンスの java.lang.System.identityHashCode() の値を返します。

(継承元 IJavaPeerable)
JniManagedPeerState

マネージド ピアの状態。

(継承元 IJavaPeerable)
JniObjectReferenceControlBlock

非同期 I/O 操作をサポートするチャネル。

(継承元 IJavaPeerable)
JniPeerMembers

メンバー アクセスと呼び出しのサポート。

(継承元 IJavaPeerable)
PeerReference

ラップされたJava オブジェクト インスタンスのJniObjectReferenceを返します。

(継承元 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)

拡張メソッド

名前 説明
GetJniTypeName(IJavaPeerable)

インスタンス selfの型の JNI 名を取得します。

JavaAs<TResult>(IJavaPeerable)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

非同期 I/O 操作をサポートするチャネル。

TryJavaCast<TResult>(IJavaPeerable, TResult)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

適用対象