Compartir a través de


FileChannel.Lock Método

Definición

Sobrecargas

Lock()

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

Adquiere un bloqueo exclusivo en el archivo de este canal.

[Android.Runtime.Register("lock", "()Ljava/nio/channels/FileLock;", "")]
public Java.Nio.Channels.FileLock? Lock ();
[<Android.Runtime.Register("lock", "()Ljava/nio/channels/FileLock;", "")>]
member this.Lock : unit -> Java.Nio.Channels.FileLock

Devoluciones

Objeto de bloqueo que representa el bloqueo recién adquirido

Atributos

Excepciones

el canal de archivo está cerrado.

este canal no se abrió para escribir.

ya se mantiene un bloqueo que se superpone a esta solicitud de bloqueo u otro subproceso está esperando adquirir un bloqueo que se superpone con esta solicitud.

el subproceso de llamada se interrumpió mientras esperaba adquirir el bloqueo.

el canal se cerró mientras el subproceso de llamada estaba esperando adquirir el bloqueo.

si se produce otro error de E/S al obtener el bloqueo solicitado.

Comentarios

Adquiere un bloqueo exclusivo en el archivo de este canal.

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

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

Documentación de Java para java.nio.channels.FileChannel.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(Int64, Int64, Boolean)

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

[Android.Runtime.Register("lock", "(JJZ)Ljava/nio/channels/FileLock;", "GetLock_JJZHandler")]
public abstract Java.Nio.Channels.FileLock? Lock (long position, long size, bool shared);
[<Android.Runtime.Register("lock", "(JJZ)Ljava/nio/channels/FileLock;", "GetLock_JJZHandler")>]
abstract member Lock : int64 * int64 * bool -> Java.Nio.Channels.FileLock

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

Objeto de bloqueo que representa el bloqueo recién adquirido

Atributos

Excepciones

si position o size es negativo.

si se cierra este canal.

si la región solicitada se superpone a una solicitud de bloqueo existente o pendiente de bloqueo.

si el canal no se abre en modo de lectura, pero se comparte es true.

si el canal no se abre en modo de escritura, pero compartido es false.

si otro subproceso cierra este canal mientras se ejecuta este método.

si el subproceso se interrumpe mientras está en estado de espera en el bloqueo de archivo deseado.

si se produce otro error de E/S.

Comentarios

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

Una invocación de este método se bloqueará hasta que se pueda bloquear la región, se cierra este canal o se interrumpe el subproceso de invocación, lo que ocurra primero.

Si otro subproceso cierra este canal durante una invocación de este método, se producirá una AsynchronousCloseException excepción .

Si se interrumpe el subproceso de invocación mientras se espera a adquirir el bloqueo, se establecerá su estado de interrupción y se producirá una FileLockInterruptionException excepción . Si el estado de interrupción del invocador se establece cuando se invoca este método, esa excepción se producirá inmediatamente; El estado de interrupción del subproceso no se cambiará.

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 argumento #lock() cero simplemente bloquea una región de tamaño Long#MAX_VALUE.

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