IAsynchronousChannel Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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}<V> <em>operation</em>(<em>...</em>)
</li li><>
void <em>operation</em>(<em>...</em> A attachment, {@link
CompletionHandler}<V,? super A> 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 AsynchronousCloseException
fehl.
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.CancellationException
warten. 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 AsynchronousCloseException
abgeschlossen.
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 |
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 |
Finalized() |
Wird aufgerufen, wenn die Instanz abgeschlossen wurde. (Geerbt von IJavaPeerable) |
SetJniIdentityHashCode(Int32) |
Legen Sie den von |
SetJniManagedPeerState(JniManagedPeerStates) |
Ein Kanal, der asynchrone E/A-Vorgänge unterstützt. (Geerbt von IJavaPeerable) |
SetPeerReference(JniObjectReference) |
Legen Sie den von |
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. |