FileChannel.Lock Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.