Compartir a través de


AsynchronousFileChannel.Lock Método

Definición

Sobrecargas

Lock()

Adquiere un bloqueo exclusivo en el archivo de este canal.

Lock(Object, ICompletionHandler)

Adquiere un bloqueo exclusivo en el archivo de este canal.

Lock(Int64, Int64, Boolean)

Adquiere un bloqueo en la región especificada del archivo de este canal.

Lock(Int64, Int64, Boolean, Object, ICompletionHandler)

Adquiere un bloqueo en la región especificada del archivo de este canal.

Lock()

Adquiere un bloqueo exclusivo en el archivo de este canal.

[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

Devoluciones

un Future objeto que representa el resultado pendiente

Atributos

Comentarios

Adquiere un bloqueo exclusivo en el archivo de este canal.

Este método inicia una operación para adquirir un bloqueo exclusivo en el archivo de este canal. El método devuelve un Future objeto que representa el resultado pendiente de la operación. El Futuremétodo de Future#get() get devuelve el objeto FileLock al finalizar correctamente.

Una invocación de este método se comporta exactamente de la misma manera que la invocación

ch.{@link #lock(long,long,boolean) lock}(0L, Long.MAX_VALUE, false)

Documentación de Java para java.nio.channels.AsynchronousFileChannel.lock().

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.

Se aplica a

Lock(Object, ICompletionHandler)

Adquiere un bloqueo exclusivo en el archivo de este canal.

[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

Parámetros

attachment
Object

Objeto que se va a adjuntar a la operación de E/S; puede ser null

handler
ICompletionHandler

Controlador para consumir el resultado

Atributos

Comentarios

Adquiere un bloqueo exclusivo en el archivo de este canal.

Este método inicia una operación para adquirir un bloqueo en la región determinada del archivo de este canal. El handler parámetro es un controlador de finalización que se invoca cuando se adquiere el bloqueo (o se produce un error en la operación). El resultado pasado al controlador de finalización es el resultante FileLock.

Una invocación de este método del formulario ch.lock(att,handler) se comporta exactamente de la misma manera que la invocación

ch.{@link #lock(long,long,boolean,Object,CompletionHandler) lock}(0L, Long.MAX_VALUE, false, att, handler)

Documentación de Java para java.nio.channels.AsynchronousFileChannel.lock(A, java.nio.channels.CompletionHandler<java.nio.channels.FileLock, ? super A>).

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.

Se aplica a

Lock(Int64, Int64, Boolean)

Adquiere un bloqueo en la región especificada del archivo de este canal.

[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

Parámetros

position
Int64

Posición en la que se va a iniciar la región bloqueada; debe ser no negativo

size
Int64

Tamaño de la región bloqueada; debe ser no negativo, y la suma position + size debe ser no negativa

shared
Boolean

true para solicitar un bloqueo compartido, en cuyo caso este canal debe estar abierto para leer (y posiblemente escribir); false para solicitar un bloqueo exclusivo, en cuyo caso este canal debe estar abierto para escribir (y posiblemente leer)

Devoluciones

un Future objeto que representa el resultado pendiente

Atributos

Comentarios

Adquiere un bloqueo en la región especificada del archivo de este canal.

Este método inicia una operación para adquirir un bloqueo en la región determinada del archivo de este canal. El método se comporta exactamente de la misma manera que el #lock(long, long, boolean, Object, CompletionHandler) método, excepto que en lugar de especificar un controlador de finalización, este método devuelve un Future que representa el resultado pendiente. El Futuremétodo de Future#get() get devuelve el objeto FileLock al finalizar correctamente.

Documentación de Java para java.nio.channels.AsynchronousFileChannel.lock(long, long, boolean).

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.

Se aplica a

Lock(Int64, Int64, Boolean, Object, ICompletionHandler)

Adquiere un bloqueo en la región especificada del archivo de este canal.

[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

Parámetros

position
Int64

Posición en la que se va a iniciar la región bloqueada; debe ser no negativo

size
Int64

Tamaño de la región bloqueada; debe ser no negativo, y la suma position + size debe ser no negativa

shared
Boolean

true para solicitar un bloqueo compartido, en cuyo caso este canal debe estar abierto para leer (y posiblemente escribir); false para solicitar un bloqueo exclusivo, en cuyo caso este canal debe estar abierto para escribir (y posiblemente leer)

attachment
Object

Objeto que se va a adjuntar a la operación de E/S; puede ser null

handler
ICompletionHandler

Controlador para consumir el resultado

Atributos

Comentarios

Adquiere un bloqueo en la región especificada del archivo de este canal.

Este método inicia una operación para adquirir un bloqueo en la región determinada del archivo de este canal. El handler parámetro es un controlador de finalización que se invoca cuando se adquiere el bloqueo (o se produce un error en la operación). El resultado pasado al controlador de finalización es el resultante FileLock.

La región especificada por los position parámetros y size no debe estar incluida en el archivo subyacente real o incluso superponerse. Las regiones de bloqueo son fijas en tamaño; si una región bloqueada contiene inicialmente el final del archivo y el archivo crece más allá de la región, la nueva parte del archivo no estará cubierta por el bloqueo. Si se espera que un archivo crezca en tamaño y se requiera un bloqueo en todo el archivo, se debe bloquear una región a partir de cero y no menor que el tamaño máximo esperado del archivo. El método de dos argumentos #lock(Object,CompletionHandler) simplemente bloquea una región de tamaño Long#MAX_VALUE. Si este método ya mantiene un bloqueo que superpone la región solicitada, o este método se ha invocado para bloquear una región superpuesta y esa operación no se ha completado, este método produce OverlappingFileLockException.

Algunos sistemas operativos no admiten un mecanismo para adquirir un bloqueo de archivo de forma asincrónica. Por lo tanto, una implementación puede adquirir el bloqueo de archivo en un subproceso en segundo plano o desde una tarea ejecutada por un subproceso en el grupo de subprocesos asociado. Si hay muchas operaciones de bloqueo pendientes, puede consumir subprocesos en la máquina virtual Java durante períodos indefinidos.

Algunos sistemas operativos no admiten bloqueos compartidos, en cuyo caso una solicitud de bloqueo compartido se convierte automáticamente en una solicitud de bloqueo exclusivo. Si el bloqueo recién adquirido es compartido o exclusivo se puede probar invocando el método del objeto de FileLock#isShared() isShared bloqueo resultante.

Los bloqueos de archivo se mantienen en nombre de toda la máquina virtual Java. No son adecuados para controlar el acceso a un archivo mediante varios subprocesos dentro de la misma máquina virtual.

Documentación de Java para java.nio.channels.AsynchronousFileChannel.lock(long, long, boolean, A, java.nio.channels.CompletionHandler<java.nio.channels.FileLock, ? super A>).

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.

Se aplica a