AsynchronousFileChannel.Lock Methode
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.
Überlädt
Lock() |
Erwirbt eine exklusive Sperre für die Datei dieses Kanals. |
Lock(Object, ICompletionHandler) |
Erwirbt eine exklusive Sperre für die Datei dieses Kanals. |
Lock(Int64, Int64, Boolean) |
Erwirbt eine Sperre für die angegebene Region der Datei dieses Kanals. |
Lock(Int64, Int64, Boolean, Object, ICompletionHandler) |
Erwirbt eine Sperre für die angegebene Region der Datei dieses Kanals. |
Lock()
Erwirbt eine exklusive Sperre für die Datei dieses Kanals.
[Android.Runtime.Register("lock", "()Ljava/util/concurrent/Future;", "", ApiSince=26)]
public Java.Util.Concurrent.IFuture? Lock ();
[<Android.Runtime.Register("lock", "()Ljava/util/concurrent/Future;", "", ApiSince=26)>]
member this.Lock : unit -> Java.Util.Concurrent.IFuture
Gibt zurück
ein Future
Objekt, das das ausstehende Ergebnis darstellt
- Attribute
Hinweise
Erwirbt eine exklusive Sperre für die Datei dieses Kanals.
Diese Methode initiiert einen Vorgang zum Abrufen einer exklusiven Sperre für die Datei dieses Kanals. Die Methode gibt ein Future
, das ausstehende Ergebnis des Vorgangs darstellt. Die Future
's Future#get() get
Methode gibt den FileLock
erfolgreichen Abschluss zurück.
Ein Aufruf dieser Methode verhält sich genauso wie der Aufruf
ch.{@link #lock(long,long,boolean) lock}(0L, Long.MAX_VALUE, false)
Java-Dokumentation für java.nio.channels.AsynchronousFileChannel.lock()
.
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.
Gilt für:
Lock(Object, ICompletionHandler)
Erwirbt eine exklusive Sperre für die Datei dieses Kanals.
[Android.Runtime.Register("lock", "(Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "", ApiSince=26)]
[Java.Interop.JavaTypeParameters(new System.String[] { "A" })]
public void Lock (Java.Lang.Object? attachment, Java.Nio.Channels.ICompletionHandler? handler);
[<Android.Runtime.Register("lock", "(Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "", ApiSince=26)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "A" })>]
member this.Lock : Java.Lang.Object * Java.Nio.Channels.ICompletionHandler -> unit
Parameter
- attachment
- Object
Das Objekt, das an den E/A-Vorgang angefügt werden soll; kann sein null
- handler
- ICompletionHandler
Der Handler für die Verwendung des Ergebnisses
- Attribute
Hinweise
Erwirbt eine exklusive Sperre für die Datei dieses Kanals.
Diese Methode initiiert einen Vorgang, um eine Sperre für die angegebene Region der Datei dieses Kanals abzurufen. Der handler
Parameter ist ein Abschlusshandler, der aufgerufen wird, wenn die Sperre abgerufen wird (oder der Vorgang fehlschlägt). Das an den Abschlusshandler übergebene Ergebnis ist das resultierende FileLock
Ergebnis.
Ein Aufruf dieser Methode des Formulars ch.lock(att,handler)
verhält sich genauso wie der Aufruf
ch.{@link #lock(long,long,boolean,Object,CompletionHandler) lock}(0L, Long.MAX_VALUE, false, att, handler)
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.
Gilt für:
Lock(Int64, Int64, Boolean)
Erwirbt eine Sperre für die angegebene Region der Datei dieses Kanals.
[Android.Runtime.Register("lock", "(JJZ)Ljava/util/concurrent/Future;", "GetLock_JJZHandler", ApiSince=26)]
public abstract Java.Util.Concurrent.IFuture? Lock (long position, long size, bool shared);
[<Android.Runtime.Register("lock", "(JJZ)Ljava/util/concurrent/Future;", "GetLock_JJZHandler", ApiSince=26)>]
abstract member Lock : int64 * int64 * bool -> Java.Util.Concurrent.IFuture
Parameter
- position
- Int64
Die Position, an der der gesperrte Bereich gestartet werden soll; muss nicht negativ sein
- size
- Int64
Die Größe des gesperrten Bereichs; muss nicht negativ sein, und die Summe position
+ size
muss nicht negativ sein.
- shared
- Boolean
true
um eine freigegebene Sperre anzufordern, in diesem Fall muss dieser Kanal zum Lesen (und möglicherweise Schreiben) geöffnet sein; false
um eine exklusive Sperre anzufordern, in diesem Fall muss dieser Kanal zum Schreiben (und möglicherweise lesen) geöffnet sein.
Gibt zurück
ein Future
Objekt, das das ausstehende Ergebnis darstellt
- Attribute
Hinweise
Erwirbt eine Sperre für die angegebene Region der Datei dieses Kanals.
Diese Methode initiiert einen Vorgang, um eine Sperre für die angegebene Region der Datei dieses Kanals abzurufen. Die Methode verhält sich genau so wie die #lock(long, long, boolean, Object, CompletionHandler)
Methode, mit der Ausnahme, dass diese Methode anstelle eines Vervollständigungshandlers ein Future
darstellungsendes Ergebnis zurückgibt. Die Future
's Future#get() get
Methode gibt den FileLock
erfolgreichen Abschluss zurück.
Java-Dokumentation für java.nio.channels.AsynchronousFileChannel.lock(long, long, boolean)
.
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.
Gilt für:
Lock(Int64, Int64, Boolean, Object, ICompletionHandler)
Erwirbt eine Sperre für die angegebene Region der Datei dieses Kanals.
[Android.Runtime.Register("lock", "(JJZLjava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "GetLock_JJZLjava_lang_Object_Ljava_nio_channels_CompletionHandler_Handler", ApiSince=26)]
[Java.Interop.JavaTypeParameters(new System.String[] { "A" })]
public abstract void Lock (long position, long size, bool shared, Java.Lang.Object? attachment, Java.Nio.Channels.ICompletionHandler? handler);
[<Android.Runtime.Register("lock", "(JJZLjava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "GetLock_JJZLjava_lang_Object_Ljava_nio_channels_CompletionHandler_Handler", ApiSince=26)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "A" })>]
abstract member Lock : int64 * int64 * bool * Java.Lang.Object * Java.Nio.Channels.ICompletionHandler -> unit
Parameter
- position
- Int64
Die Position, an der der gesperrte Bereich gestartet werden soll; muss nicht negativ sein
- size
- Int64
Die Größe des gesperrten Bereichs; muss nicht negativ sein, und die Summe position
+ size
muss nicht negativ sein.
- shared
- Boolean
true
um eine freigegebene Sperre anzufordern, in diesem Fall muss dieser Kanal zum Lesen (und möglicherweise Schreiben) geöffnet sein; false
um eine exklusive Sperre anzufordern, in diesem Fall muss dieser Kanal zum Schreiben (und möglicherweise lesen) geöffnet sein.
- attachment
- Object
Das Objekt, das an den E/A-Vorgang angefügt werden soll; kann sein null
- handler
- ICompletionHandler
Der Handler für die Verwendung des Ergebnisses
- Attribute
Hinweise
Erwirbt eine Sperre für die angegebene Region der Datei dieses Kanals.
Diese Methode initiiert einen Vorgang, um eine Sperre für die angegebene Region der Datei dieses Kanals abzurufen. Der handler
Parameter ist ein Abschlusshandler, der aufgerufen wird, wenn die Sperre abgerufen wird (oder der Vorgang fehlschlägt). Das an den Abschlusshandler übergebene Ergebnis ist das resultierende FileLock
Ergebnis.
Der durch die position
Parameter size
angegebene Bereich muss nicht in der tatsächlich zugrunde liegenden Datei enthalten sein oder sogar überlappen. Sperrbereiche sind in der Größe festgelegt; wenn ein gesperrter Bereich anfangs das Ende der Datei enthält und die Datei über den Bereich hinaus wächst, wird der neue Teil der Datei nicht von der Sperre abgedeckt. Wenn erwartet wird, dass eine Datei größer wird und eine Sperre für die gesamte Datei erforderlich ist, sollte ein Bereich mit Null und nicht kleiner als die erwartete maximale Größe der Datei gesperrt werden. Die Methode mit zwei Argumenten #lock(Object,CompletionHandler)
sperrt einfach einen Bereich der Größe Long#MAX_VALUE
. Wenn eine Sperre, die den angeforderten Bereich überlappt, bereits von diesem virtuellen Java-Computer gehalten wird oder diese Methode aufgerufen wurde, um einen überlappenden Bereich zu sperren und dieser Vorgang nicht abgeschlossen wurde, wird diese Methode ausgelöst OverlappingFileLockException
.
Einige Betriebssysteme unterstützen keinen Mechanismus zum Abrufen einer Dateisperre auf asynchrone Weise. Daher kann eine Implementierung die Dateisperre in einem Hintergrundthread oder von einer Aufgabe abrufen, die von einem Thread im zugeordneten Threadpool ausgeführt wird. Wenn viele Sperrvorgänge ausstehen, kann sie Threads auf dem virtuellen Java-Computer für unbestimmte Zeiträume nutzen.
Einige Betriebssysteme unterstützen keine freigegebenen Sperren. In diesem Fall wird eine Anforderung für eine freigegebene Sperre automatisch in eine Anforderung für eine exklusive Sperre konvertiert. Ob die neu erworbene Sperre freigegeben oder exklusiv ist, kann durch Aufrufen der Methode des resultierenden Sperrobjekts FileLock#isShared() isShared
getestet werden.
Dateisperren werden im Namen des gesamten virtuellen Java-Computers gespeichert. Sie eignen sich nicht für die Steuerung des Zugriffs auf eine Datei durch mehrere Threads innerhalb desselben virtuellen Computers.
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.