Condividi tramite


FileChannel.Lock Metodo

Definizione

Overload

Lock()

Acquisisce un blocco esclusivo sul file del canale.

Lock(Int64, Int64, Boolean)

Acquisisce un blocco sull'area specificata del file del canale.

Lock()

Acquisisce un blocco esclusivo sul file del canale.

[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

Restituisce

Oggetto lock che rappresenta il blocco appena acquisito

Attributi

Eccezioni

il canale di file è chiuso.

questo canale non è stato aperto per la scrittura.

Un blocco è già mantenuto che si sovrappone a questa richiesta di blocco oppure un altro thread è in attesa di acquisire un blocco che si sovrapponerà a questa richiesta.

il thread chiamante è stato interrotto durante l'attesa di acquisire il blocco.

il canale è stato chiuso mentre il thread chiamante era in attesa di acquisire il blocco.

se si verifica un altro errore di I/O durante il recupero del blocco richiesto.

Commenti

Acquisisce un blocco esclusivo sul file del canale.

Una chiamata di questo metodo del form fc.lock() si comporta esattamente come la chiamata

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

Documentazione java per java.nio.channels.FileChannel.lock().

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.

Si applica a

Lock(Int64, Int64, Boolean)

Acquisisce un blocco sull'area specificata del file del canale.

[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

Parametri

position
Int64

Posizione in cui deve iniziare l'area bloccata; deve essere non negativo

size
Int64

Dimensioni dell'area bloccata; deve essere non negativo e la somma position + size deve essere non negativa

shared
Boolean

true per richiedere un blocco condiviso, nel qual caso questo canale deve essere aperto per la lettura (ed eventualmente la scrittura); false per richiedere un blocco esclusivo, nel qual caso questo canale deve essere aperto per la scrittura (ed eventualmente la lettura)

Restituisce

Oggetto lock che rappresenta il blocco appena acquisito

Attributi

Eccezioni

se position o size è negativo.

se il canale è chiuso.

se l'area richiesta si sovrappone a una richiesta di blocco o di blocco in sospeso esistente.

se il canale non viene aperto in modalità di lettura ma condiviso è true.

se il canale non viene aperto in modalità di scrittura ma condiviso è false.

se questo canale viene chiuso da un altro thread durante l'esecuzione di questo metodo.

se il thread viene interrotto mentre è in attesa del blocco del file desiderato.

se si verifica un altro errore di I/O.

Commenti

Acquisisce un blocco sull'area specificata del file del canale.

Una chiamata di questo metodo verrà bloccata fino a quando l'area non può essere bloccata, questo canale viene chiuso o il thread di richiamo viene interrotto, a ogni volta che arriva per primo.

Se questo canale viene chiuso da un altro thread durante una chiamata di questo metodo, verrà generata un'eccezione AsynchronousCloseException .

Se il thread di richiamo viene interrotto durante l'attesa di acquisire il blocco, verrà impostato lo stato di interruzione e verrà generata un'eccezione FileLockInterruptionException . Se lo stato di interrupt del invoker viene impostato quando questo metodo viene richiamato, tale eccezione verrà generata immediatamente; lo stato di interruzione del thread non verrà modificato.

L'area specificata dai position parametri e size non deve essere contenuta all'interno o addirittura sovrapporsi al file sottostante effettivo. Le aree di blocco sono fisse; se inizialmente un'area bloccata contiene la fine del file e il file aumenta oltre l'area, la nuova parte del file non verrà coperta dal blocco. Se è previsto un aumento delle dimensioni di un file e è necessario un blocco per l'intero file, è necessario che un'area a partire da zero e non sia inferiore alla dimensione massima prevista del file, deve essere bloccata. Il metodo zero-argument #lock() blocca semplicemente un'area di dimensioni Long#MAX_VALUE.

Alcuni sistemi operativi non supportano blocchi condivisi, nel qual caso una richiesta di blocco condiviso viene convertita automaticamente in una richiesta di blocco esclusivo. Se il blocco appena acquisito è condiviso o esclusivo può essere testato richiamando il metodo dell'oggetto FileLock#isShared() isShared di blocco risultante.

I blocchi di file vengono mantenuti per conto dell'intera macchina virtuale Java. Non sono adatti per controllare l'accesso a un file da più thread all'interno della stessa macchina virtuale.

Documentazione java per java.nio.channels.FileChannel.lock(long, long, boolean).

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.

Si applica a