FileChannel.Lock Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.