IAsynchronousChannel インターフェイス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
非同期 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}<V> <em>operation</em>(<em>...</em>)
</li li><>
void <em>operation</em>(<em>...</em> A attachment, {@link
CompletionHandler}<V,? super A> handler)
</li></ol>
ここで 、操作 は I/O 操作の名前 (読み取りまたは書き込みなど)、 V は I/O 操作の結果の型、 A は結果を使用するときにコンテキストを提供するために I/O 操作にアタッチされたオブジェクトの型です。 添付ファイルは、多くの I/O 操作の結果を <使用するために em>state-less</em>CompletionHandler
が使用される場合に重要です。
最初の形式では、インターフェイスによって定義されたメソッドを Future Future
使用して、操作が完了したかどうかを確認し、その完了を待ち、結果を取得できます。 2 番目の形式では、完了または失敗したときに I/O 操作の結果を使用するために a CompletionHandler
が呼び出されます。
このインターフェイスを実装するチャネルは<>非同期的に 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 操作を取り消すことができるかどうかは、実装固有であるため、指定されていません。 取り消しがチャネルまたは接続先のエンティティから不整合な状態で残された場合、チャネルは実装固有<のエラー>状態<に>置かれます。これにより、取り消された操作と同様の I/O 操作をさらに開始できなくなります。 たとえば、読み取り操作が取り消されても、実装がチャネルからバイトが読み取られないことを保証できない場合、チャネルはエラー状態になります。さらに操作を開始しようとすると、 read
指定されていないランタイム例外がスローされます。 同様に、書き込み操作が取り消されたが、実装がチャネルにバイトが書き込まれていないことを保証できない場合、後続の試行では write
、ランタイム例外が指定されていない状態で失敗します。
パラメーターをFuture#cancel cancel
設定してtrue
メソッドをmayInterruptIfRunning
呼び出した場合、チャネルを閉じることによって I/O 操作が中断される可能性があります。 その場合、I/O 操作の結果を待機しているすべてのスレッドがスロー CancellationException
され、チャネルで未処理のその他の I/O 操作が例外 AsynchronousCloseException
で完了します。
cancel
読み取り操作または書き込み操作を取り消すためにメソッドを呼び出す場合は、I/O 操作で使用されるすべてのバッファーを破棄するか、チャネルを開いたままでバッファーにアクセスしないように注意することをお勧めします。
1.7 で追加されました。
の Java ドキュメントjava.nio.channels.AsynchronousChannel
このページの一部は、Android オープンソース プロジェクトによって作成および共有され、クリエイティブ コモンズ 2.5 属性ライセンスに記載されている条件に従って使用される作業に基づく変更です。
プロパティ
Handle |
基になる Android オブジェクトの JNI 値を取得します。 (継承元 IJavaObject) |
IsOpen |
このチャネルが開いている場合は true を返します。 (継承元 IChannel) |
JniIdentityHashCode |
ラップされたインスタンスの |
JniManagedPeerState |
マネージド ピアの状態。 (継承元 IJavaPeerable) |
JniPeerMembers |
メンバー アクセスと呼び出しのサポート。 (継承元 IJavaPeerable) |
PeerReference |
ラップされた Java オブジェクト インスタンスの a JniObjectReference を返します。 (継承元 IJavaPeerable) |
メソッド
Close() |
このチャネルを閉じます。 |
Disposed() |
インスタンスが破棄されたときに呼び出されます。 (継承元 IJavaPeerable) |
DisposeUnlessReferenced() |
このインスタンスへの未処理の参照がない場合は、呼び出 |
Finalized() |
インスタンスが終了したときに呼び出されます。 (継承元 IJavaPeerable) |
SetJniIdentityHashCode(Int32) |
によって |
SetJniManagedPeerState(JniManagedPeerStates) |
非同期 I/O 操作をサポートするチャネル。 (継承元 IJavaPeerable) |
SetPeerReference(JniObjectReference) |
によって |
UnregisterFromRuntime() |
ランタイムが将来 Java.Interop.JniRuntime+JniValueManager.PeekValue の呼び出しから返されないように、このインスタンスの登録を解除します。 (継承元 IJavaPeerable) |
拡張メソッド
JavaCast<TResult>(IJavaObject) |
Android ランタイムチェック型変換を実行します。 |
JavaCast<TResult>(IJavaObject) |
非同期 I/O 操作をサポートするチャネル。 |
GetJniTypeName(IJavaPeerable) |
非同期 I/O 操作をサポートするチャネル。 |