Freigeben über


IAsynchronousChannel Schnittstelle

Definition

Ein Kanal, der asynchrone E/A-Vorgänge unterstützt.

[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
Abgeleitet
Attribute
Implementiert

Hinweise

Ein Kanal, der asynchrone E/A-Vorgänge unterstützt. Asynchrone E/A-Vorgänge übernehmen in der Regel eine von zwei Formen:

<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>

dabei ist der Vorgang der Name des E/A-Vorgangs (z. B. Lese- oder Schreibzugriff), V ist der Ergebnistyp des E/A-Vorgangs, und A ist der Typ eines Objekts, das an den E/A-Vorgang angefügt ist, um Kontext bereitzustellen, wenn das Ergebnis verwendet wird. Die Anlage ist wichtig für Fälle, in denen ein <Em-Zustandslose></Em>CompletionHandler verwendet wird, um das Ergebnis vieler E/A-Vorgänge zu nutzen.

In der ersten Form können die von der Future Future Schnittstelle definierten Methoden verwendet werden, um zu überprüfen, ob der Vorgang abgeschlossen ist, warten Sie auf den Abschluss, und rufen Sie das Ergebnis ab. Im zweiten Formular wird ein CompletionHandler Aufruf aufgerufen, um das Ergebnis des E/A-Vorgangs zu nutzen, wenn er abgeschlossen oder fehlschlägt.

Ein Kanal, der diese Schnittstelle implementiert, ist <asynchron>schließend</em>: Wenn ein E/A-Vorgang im Kanal ausfällt und die Methode des Kanals #close close aufgerufen wird, schlägt der E/A-Vorgang mit der Ausnahme AsynchronousCloseExceptionfehl.

Asynchrone Kanäle sind sicher für die Verwendung durch mehrere gleichzeitige Threads. Einige Kanalimplementierungen unterstützen möglicherweise gleichzeitiges Lesen und Schreiben, aber nicht zulassen, dass mehrere Lese- und Schreibvorgänge zu einem bestimmten Zeitpunkt ausstehen.

<h2>Abbruch</h2>

Die Future Schnittstelle definiert die Methode zum Abbrechen der Future#cancel cancel Ausführung. Dadurch werden alle Threads ausgelöst, die auf das Ergebnis des E/A-Vorgangs java.util.concurrent.CancellationExceptionwarten. Gibt an, ob der zugrunde liegende E/A-Vorgang abgebrochen werden kann, ist eine sehr spezifische Implementierung und daher nicht angegeben. Wenn der Abbruch den Kanal verlässt oder die Entität, mit der sie verbunden ist, in einem inkonsistenten Zustand, wird der Kanal in einen implementierungsspezifischen Em-Fehlerstatus></em> versetzt, der weitere Versuche verhindert, E/A-Vorgänge zu initiieren, die dem abgebrochenen Vorgang ähneln.< Wenn beispielsweise ein Lesevorgang abgebrochen wird, die Implementierung jedoch nicht garantieren kann, dass Bytes nicht aus dem Kanal gelesen wurden, wird der Kanal in einen Fehlerzustand versetzt. Weitere Versuche, einen read Vorgang zu initiieren, führen dazu, dass eine nicht angegebene Laufzeitausnahme ausgelöst wird. Wenn ein Schreibvorgang abgebrochen wird, die Implementierung jedoch nicht garantieren kann, dass Bytes nicht in den Kanal geschrieben wurden, schlägt bei nachfolgenden Versuchen, einen write Vorgang zu initiieren, mit einer nicht angegebenen Laufzeitausnahme fehl.

Wenn die Future#cancel cancel Methode mit dem mayInterruptIfRunning Parameter aufgerufen wird, true der auf den Parameter festgelegt ist, kann der E/A-Vorgang durch Schließen des Kanals unterbrochen werden. In diesem Fall werden alle Threads, die auf das Ergebnis des E/A-Vorgangs warten CancellationException , und alle anderen E/A-Vorgänge, die für den Kanal ausstehen, mit der Ausnahme AsynchronousCloseExceptionabgeschlossen.

Wenn die cancel Methode aufgerufen wird, um Lese- oder Schreibvorgänge abzubrechen, empfiehlt es sich, alle puffer, die in den E/A-Vorgängen verwendet werden, zu verwerfen oder sicherzustellen, dass auf die Puffer nicht zugegriffen wird, während der Kanal geöffnet bleibt.

In 1.7 hinzugefügt.

Java-Dokumentation für java.nio.channels.AsynchronousChannel.

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Eigenschaften

Handle

Ruft den JNI-Wert des zugrunde liegenden Android-Objekts ab.

(Geerbt von IJavaObject)
IsOpen

Gibt true zurück, wenn dieser Kanal geöffnet ist.

(Geerbt von IChannel)
JniIdentityHashCode

Gibt den Wert java.lang.System.identityHashCode() für die umbrochene Instanz zurück.

(Geerbt von IJavaPeerable)
JniManagedPeerState

Status des verwalteten Peers.

(Geerbt von IJavaPeerable)
JniPeerMembers

Mitgliedszugriff und Aufrufunterstützung.

(Geerbt von IJavaPeerable)
PeerReference

Gibt eine JniObjectReference der umbrochenen Java-Objektinstanz zurück.

(Geerbt von IJavaPeerable)

Methoden

Close()

Schließt diesen Kanal.

Disposed()

Wird aufgerufen, wenn die Instanz verworfen wurde.

(Geerbt von IJavaPeerable)
DisposeUnlessReferenced()

Wenn keine offenen Verweise auf diese Instanz vorhanden sind, wird nichts aufgerufen Dispose(). Andernfalls wird nichts ausgeführt.

(Geerbt von IJavaPeerable)
Finalized()

Wird aufgerufen, wenn die Instanz abgeschlossen wurde.

(Geerbt von IJavaPeerable)
SetJniIdentityHashCode(Int32)

Legen Sie den von JniIdentityHashCode.

(Geerbt von IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Ein Kanal, der asynchrone E/A-Vorgänge unterstützt.

(Geerbt von IJavaPeerable)
SetPeerReference(JniObjectReference)

Legen Sie den von PeerReference.

(Geerbt von IJavaPeerable)
UnregisterFromRuntime()

Heben Sie die Registrierung dieser Instanz auf, damit die Laufzeit sie nicht aus zukünftigen Java.Interop.JniRuntime+JniValueManager.PeekValue Aufrufen zurückgibt.

(Geerbt von IJavaPeerable)

Erweiterungsmethoden

JavaCast<TResult>(IJavaObject)

Führt eine android-laufzeitgecheckte Typkonvertierung aus.

JavaCast<TResult>(IJavaObject)

Ein Kanal, der asynchrone E/A-Vorgänge unterstützt.

GetJniTypeName(IJavaPeerable)

Ein Kanal, der asynchrone E/A-Vorgänge unterstützt.

Gilt für: