FileChannel.Lock Método

Definição

Sobrecargas

Nome Description
Lock()

Adquire um bloqueio exclusivo no arquivo deste canal.

Lock(Int64, Int64, Boolean)

Adquire um bloqueio na região especificada 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 gravação.

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

o thread de chamada foi interrompido enquanto esperava para adquirir o bloqueio.

o canal foi fechado enquanto o thread de chamada estava esperando para adquirir o bloqueio.

se outro erro de E/S ocorrer durante a obtenção do 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)

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

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

Aplica-se a

Lock(Int64, Int64, Boolean)

Adquire um bloqueio na região especificada 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 na qual a região bloqueada deve ser iniciada; deve ser não negativo

size
Int64

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

shared
Boolean

true para solicitar um bloqueio compartilhado, nesse caso, esse canal deve estar aberto para leitura (e possivelmente gravação); false para solicitar um bloqueio exclusivo, nesse caso, esse canal deve estar aberto para gravação (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 sobrepõe a um bloqueio existente ou solicitação de bloqueio pendente.

se o canal não estiver aberto no modo de leitura, mas compartilhado for verdadeiro.

se o canal não estiver aberto no modo de gravação, mas compartilhado for falso.

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 especificada 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 a aquisição do bloqueio, seu status de interrupção será definido e um FileLockInterruptionException será gerado. Se o status de interrupção do invocador for definido quando esse método for invocado, essa exceção será lançada imediatamente; O status de interrupção do thread não será alterado.

A região especificada pelo e size os position parâmetros não precisam ser contidos no arquivo subjacente real ou mesmo sobreposto. 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 espera-se que um arquivo aumente de tamanho e um bloqueio em todo o arquivo seja necessário, uma região começando em zero, e não menor 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 dão suporte a bloqueios compartilhados, caso em que uma solicitação para um bloqueio compartilhado é convertida automaticamente em uma solicitação para um bloqueio exclusivo. Se o bloqueio recém-adquirido é compartilhado ou exclusivo pode ser testado invocando o método do objeto de FileLock#isShared() isShared bloqueio resultante.

Os bloqueios de arquivo 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 na mesma máquina virtual.

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

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

Aplica-se a