共用方式為


FileChannel.Lock 方法

定義

多載

Lock()

取得此通道檔案的獨佔鎖定。

Lock(Int64, Int64, Boolean)

取得此通道檔案指定區域的鎖定。

Lock()

取得此通道檔案的獨佔鎖定。

[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

傳回

代表新取得鎖定的鎖定物件

屬性

例外狀況

檔案通道已關閉。

此通道未開啟以供寫入。

鎖定已經保留,重迭此鎖定要求,或另一個線程正在等候取得與這個要求重疊的鎖定。

呼叫線程在等候取得鎖定時中斷。

呼叫線程等候取得鎖定時,通道已關閉。

如果在取得要求鎖定時發生另一個 I/O 錯誤。

備註

取得此通道檔案的獨佔鎖定。

表單 fc.lock() 的這個方法調用的行為方式與調用完全相同

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

java.nio.channels.FileChannel.lock()Java 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

適用於

Lock(Int64, Int64, Boolean)

取得此通道檔案指定區域的鎖定。

[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

參數

position
Int64

鎖定區域要啟動的位置;必須是非負數

size
Int64

鎖定區域的大小;必須是非負數,而且 sum position + size 必須是非負數

shared
Boolean

true 若要要求共用鎖定,在此情況下,此通道必須開啟以供讀取(且可能寫入): false 若要要求獨佔鎖定,在此情況下,此通道必須開啟以供寫入(且可能讀取)

傳回

代表新取得鎖定的鎖定物件

屬性

例外狀況

如果 positionsize 為負數,則為 。

如果這個通道已關閉,則為 。

如果要求的區域與現有的鎖定或擱置鎖定要求重疊,則為 。

如果通道未在讀取模式中開啟,但共用則為 true。

如果通道未在寫入模式中開啟,但共用為 false,

如果這個通道在此方法執行時由另一個線程關閉,則為 。

如果執行緒在等候所需的檔案鎖定時中斷, 則為 。

如果發生另一個 I/O 錯誤,則為 。

備註

取得此通道檔案指定區域的鎖定。

這個方法的叫用會封鎖,直到區域可以鎖定、此通道已關閉,或叫用線程中斷,無論哪一個都先行。

如果這個通道在叫用此方法期間由另一個線程關閉, AsynchronousCloseException 則會擲回 。

如果叫用線程在等候取得鎖定時中斷,則會設定其中斷狀態,並 FileLockInterruptionException 擲回 。 如果在叫用此方法時設定叫用者的中斷狀態,則會立即擲回該例外狀況;線程的中斷狀態將不會變更。

size 參數所position指定的區域不需要包含在實際的基礎檔案內,甚至不需要重疊。 鎖定區域的大小固定;如果鎖定的區域一開始包含檔尾,且檔案成長超過區域,則鎖定不會涵蓋檔案的新部分。 如果檔案的大小預期會成長,而且需要整個檔案的鎖定,則應該鎖定從零開始的區域,且不小於預期的檔案大小上限。 零自變數 #lock() 方法只會鎖定大小 Long#MAX_VALUE的區域。

某些操作系統不支持共用鎖定,在此情況下,共用鎖定的要求會自動轉換成獨佔鎖定的要求。 新取得的鎖定是否為共用或獨佔,可藉由叫用產生的鎖定物件的 FileLock#isShared() isShared 方法進行測試。

檔案鎖定代表整個 Java 虛擬機保留。 它們不適合控制相同虛擬機內多個線程對檔案的存取。

java.nio.channels.FileChannel.lock(long, long, boolean)Java 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

適用於