語言

FileChannel.TryLock 方法

定義

多載

名稱 Description
TryLock()

試圖取得該頻道檔案的專屬鎖。

TryLock(Int64, Int64, Boolean)

嘗試鎖定該頻道檔案的指定區域。

TryLock()

試圖取得該頻道檔案的專屬鎖。

[Android.Runtime.Register("tryLock", "()Ljava/nio/channels/FileLock;", "")]
public Java.Nio.Channels.FileLock? TryLock();
[<Android.Runtime.Register("tryLock", "()Ljava/nio/channels/FileLock;", "")>]
member this.TryLock : unit -> Java.Nio.Channels.FileLock

傳回

一個代表新取得鎖的鎖物件,或 null 是因為其他程式持有重疊鎖而無法取得該鎖

屬性

例外狀況

如果檔案通道是關閉的。

如果已有與該鎖請求重疊的鎖,或有其他執行緒正在等待取得與此請求重疊的鎖。

如果發生任何 I/O 錯誤。

備註

試圖取得該頻道檔案的專屬鎖。

此形式的 fc.tryLock() 呼叫與呼叫完全相同

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

Java 文件 java.nio.channels.FileChannel.tryLock()。

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於

TryLock(Int64, Int64, Boolean)

嘗試鎖定該頻道檔案的指定區域。

[Android.Runtime.Register("tryLock", "(JJZ)Ljava/nio/channels/FileLock;", "GetTryLock_JJZHandler")]
public abstract Java.Nio.Channels.FileLock? TryLock(long position, long size, bool shared);
[<Android.Runtime.Register("tryLock", "(JJZ)Ljava/nio/channels/FileLock;", "GetTryLock_JJZHandler")>]
abstract member TryLock : int64 * int64 * bool -> Java.Nio.Channels.FileLock

參數

position
Int64

鎖定區域起始的位置;必須是非負數

size
Int64

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

shared
Boolean

true 請求共享鎖, false 請求獨佔鎖

傳回

一個代表新取得鎖的鎖物件,或 null 是因為其他程式持有重疊鎖而無法取得該鎖

屬性

例外狀況

如果有任何參數不成立。

如果檔案通道是關閉的。

如果已經持有與該鎖請求重疊的鎖,或有其他執行緒正在等待取得與此請求重疊的鎖。

如果發生任何 I/O 錯誤。

備註

嘗試鎖定該頻道檔案的指定區域。

這個方法不會封鎖。 召喚總是立即返回,無論是已鎖定該區域,或是未能成功。 若因重疊鎖被其他程式持有而未能取得鎖,則返回 null。 若因其他原因未能取得鎖,則會拋出適當的例外。

由 和 position 參數指定的size區域不必包含於實際底層檔案內,甚至不必重疊。 閘區大小固定;如果一個鎖定區域最初包含檔案的末尾,且檔案超出該區域,那麼新檔案部分將不會被鎖定覆蓋。 如果檔案預期會變大,且需要對整個檔案進行鎖定,則應鎖定從零開始且不小於檔案預期最大大小的區域。 零參數 #tryLock() 方法簡單地鎖定大小 Long#MAX_VALUE為 的區域。

部分作業系統不支援共享鎖,此時共享鎖的請求會自動轉換成專屬鎖的請求。 新取得的鎖是共享還是獨佔,可以透過調用所得鎖物件的方法 FileLock#isShared() isShared 來測試。

檔案鎖是代表整個 Java 虛擬機器持有的。 它們不適合在同一虛擬機器內控制多個執行緒對檔案的存取。

Java 文件 java.nio.channels.FileChannel.tryLock(long, long, boolean)。

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於