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