Compartilhar via


FileChannel.Lock Método

Definição

Sobrecargas

Lock()

Adquire um bloqueio exclusivo no arquivo deste canal.

Lock(Int64, Int64, Boolean)

Adquire um bloqueio na região determinada do arquivo deste canal.

Lock()

Adquire um bloqueio exclusivo no arquivo deste 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

Retornos

Um objeto de bloqueio que representa o bloqueio recém-adquirido

Atributos

Exceções

O canal de arquivo está fechado.

este canal não foi aberto para escrita.

ou já está mantido um bloqueio que se sobrepõe a essa solicitação de bloqueio ou outro thread está aguardando para adquirir um bloqueio que se sobreporá a essa solicitação.

O thread de chamada foi interrompido enquanto aguardava para adquirir o bloqueio.

O canal foi fechado enquanto o thread de chamada aguardava para adquirir o bloqueio.

se ocorrer outro erro de E/S ao obter o bloqueio solicitado.

Comentários

Adquire um bloqueio exclusivo no arquivo deste canal.

Uma invocação desse método do formulário fc.lock() se comporta exatamente da mesma maneira que a invocação

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

Documentação Java para java.nio.channels.FileChannel.lock().

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usado de acordo com os termos descritos na Creative Commons 2.5 Attribution License.

Aplica-se a

Lock(Int64, Int64, Boolean)

Adquire um bloqueio na região determinada do arquivo deste 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

A posição em que a região bloqueada deve começar; deve ser não-negativo

size
Int64

O tamanho da região trancada; deve ser não-negativa, e a soma position + size deve ser não-negativa

shared
Boolean

true solicitar um bloqueio compartilhado, caso em que esse canal deve estar aberto para leitura (e possivelmente escrita); false para solicitar um bloqueio exclusivo, caso em que este canal deve estar aberto para escrita (e possivelmente leitura)

Retornos

Um objeto de bloqueio que representa o bloqueio recém-adquirido

Atributos

Exceções

se position ou size for negativo.

se este canal estiver fechado.

se a região solicitada se sobrepor a um bloqueio existente ou a uma solicitação de bloqueio pendente.

Se o canal não estiver aberto no modo de leitura, mas compartilhado for true.

Se o canal não estiver aberto no modo de gravação, mas for compartilhado será false.

se esse canal for fechado por outro thread enquanto esse método estiver em execução.

se o thread for interrompido enquanto estiver no estado de espera no bloqueio de arquivo desejado.

se ocorrer outro erro de E/S.

Comentários

Adquire um bloqueio na região determinada do arquivo deste canal.

Uma invocação desse método será bloqueada até que a região possa ser bloqueada, esse canal seja fechado ou o thread de invocação seja interrompido, o que ocorrer primeiro.

Se esse canal for fechado por outro thread durante uma invocação desse método, um AsynchronousCloseException será lançado.

Se o thread de invocação for interrompido enquanto aguarda para adquirir o bloqueio, seu status de interrupção será definido e um FileLockInterruptionException será lançado. Se o status de interrupção do invocador for definido quando esse método for chamado, essa exceção será lançada imediatamente; O status de interrupção do thread não será alterado.

A região especificada pelos position parâmetros e size não precisa estar contida no arquivo subjacente real ou mesmo se sobrepor. As regiões de bloqueio são fixas em tamanho; Se uma região bloqueada inicialmente contiver o final do arquivo e o arquivo crescer além da região, a nova parte do arquivo não será coberta pelo bloqueio. Se for esperado que um arquivo aumente de tamanho e um bloqueio no arquivo inteiro for necessário, uma região começando em zero, e não menor do que o tamanho máximo esperado do arquivo, deverá ser bloqueada. O método de argumento #lock() zero simplesmente bloqueia uma região de tamanho Long#MAX_VALUE.

Alguns sistemas operacionais não oferecem suporte a bloqueios compartilhados, caso em que uma solicitação de bloqueio compartilhado é automaticamente convertida em uma solicitação de bloqueio exclusivo. Se o bloqueio recém-adquirido é compartilhado ou exclusivo pode ser testado invocando o método do FileLock#isShared() isShared objeto de bloqueio resultante.

Os bloqueios de arquivos são mantidos em nome de toda a máquina virtual Java. Eles não são adequados para controlar o acesso a um arquivo por vários threads dentro da mesma máquina virtual.

Documentação Java para java.nio.channels.FileChannel.lock(long, long, boolean).

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usado de acordo com os termos descritos na Creative Commons 2.5 Attribution License.

Aplica-se a