共用方式為


AsynchronousFileChannel.Lock 方法

定義

多載

Lock()

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

Lock(Object, ICompletionHandler)

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

Lock(Int64, Int64, Boolean)

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

Lock(Int64, Int64, Boolean, Object, ICompletionHandler)

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

Lock()

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

[Android.Runtime.Register("lock", "()Ljava/util/concurrent/Future;", "", ApiSince=26)]
public Java.Util.Concurrent.IFuture? Lock ();
[<Android.Runtime.Register("lock", "()Ljava/util/concurrent/Future;", "", ApiSince=26)>]
member this.Lock : unit -> Java.Util.Concurrent.IFuture

傳回

Future物件,表示擱置的結果

屬性

備註

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

這個方法會起始作業,以取得此通道檔案的獨佔鎖定。 方法會傳 Future 回 ,表示作業的暫止結果。 Future方法 Future#get() get 會在成功完成時傳FileLock回 。

這個方法的調用行為與調用完全相同

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

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

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

適用於

Lock(Object, ICompletionHandler)

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

[Android.Runtime.Register("lock", "(Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "", ApiSince=26)]
[Java.Interop.JavaTypeParameters(new System.String[] { "A" })]
public void Lock (Java.Lang.Object? attachment, Java.Nio.Channels.ICompletionHandler? handler);
[<Android.Runtime.Register("lock", "(Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "", ApiSince=26)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "A" })>]
member this.Lock : Java.Lang.Object * Java.Nio.Channels.ICompletionHandler -> unit

參數

attachment
Object

要附加至 I/O 作業的物件;可以是 null

handler
ICompletionHandler

取用結果的處理程式

屬性

備註

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

這個方法會起始作業,以取得此通道檔案指定區域的鎖定。 handler參數是取得鎖定時叫用的完成處理程式(或作業失敗)。 傳遞至完成處理程式的結果是產生的 FileLock

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

ch.{@link #lock(long,long,boolean,Object,CompletionHandler) lock}(0L, Long.MAX_VALUE, false, att, handler)

java.nio.channels.AsynchronousFileChannel.lock(A, java.nio.channels.CompletionHandler<java.nio.channels.FileLock, ? super A>)Java 檔。

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

適用於

Lock(Int64, Int64, Boolean)

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

[Android.Runtime.Register("lock", "(JJZ)Ljava/util/concurrent/Future;", "GetLock_JJZHandler", ApiSince=26)]
public abstract Java.Util.Concurrent.IFuture? Lock (long position, long size, bool shared);
[<Android.Runtime.Register("lock", "(JJZ)Ljava/util/concurrent/Future;", "GetLock_JJZHandler", ApiSince=26)>]
abstract member Lock : int64 * int64 * bool -> Java.Util.Concurrent.IFuture

參數

position
Int64

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

size
Int64

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

shared
Boolean

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

傳回

Future物件,表示擱置的結果

屬性

備註

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

這個方法會起始作業,以取得此通道檔案指定區域的鎖定。 方法的行為方式與 方法完全相同 #lock(long, long, boolean, Object, CompletionHandler) ,不同之處在於,這個方法會傳回 Future 代表擱置結果的,而不是指定完成處理程式。 Future方法 Future#get() get 會在成功完成時傳FileLock回 。

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

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

適用於

Lock(Int64, Int64, Boolean, Object, ICompletionHandler)

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

[Android.Runtime.Register("lock", "(JJZLjava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "GetLock_JJZLjava_lang_Object_Ljava_nio_channels_CompletionHandler_Handler", ApiSince=26)]
[Java.Interop.JavaTypeParameters(new System.String[] { "A" })]
public abstract void Lock (long position, long size, bool shared, Java.Lang.Object? attachment, Java.Nio.Channels.ICompletionHandler? handler);
[<Android.Runtime.Register("lock", "(JJZLjava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "GetLock_JJZLjava_lang_Object_Ljava_nio_channels_CompletionHandler_Handler", ApiSince=26)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "A" })>]
abstract member Lock : int64 * int64 * bool * Java.Lang.Object * Java.Nio.Channels.ICompletionHandler -> unit

參數

position
Int64

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

size
Int64

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

shared
Boolean

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

attachment
Object

要附加至 I/O 作業的物件;可以是 null

handler
ICompletionHandler

取用結果的處理程式

屬性

備註

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

這個方法會起始作業,以取得此通道檔案指定區域的鎖定。 handler參數是取得鎖定時叫用的完成處理程式(或作業失敗)。 傳遞至完成處理程式的結果是產生的 FileLock

size 參數所position指定的區域不需要包含在實際的基礎檔案內,甚至不需要重疊。 鎖定區域的大小固定;如果鎖定的區域一開始包含檔尾,且檔案成長超過區域,則鎖定不會涵蓋檔案的新部分。 如果檔案的大小預期會成長,而且需要整個檔案的鎖定,則應該鎖定從零開始的區域,且不小於預期的檔案大小上限。 雙自變數 #lock(Object,CompletionHandler) 方法只會鎖定大小 Long#MAX_VALUE的區域。 如果這個 Java 虛擬機已保留重疊要求區域的鎖定,或已叫用此方法來鎖定重疊的區域,且該作業尚未完成,則此方法會 OverlappingFileLockException擲回 。

某些操作系統不支援以異步方式取得檔案鎖定的機制。 因此,實作可能會從背景線程中的檔案鎖定,或從相關聯線程集區中的線程所執行的工作取得檔案鎖定。 如果有許多未處理的鎖定作業,則可能會無限期地取用 Java 虛擬機中的線程。

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

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

java.nio.channels.AsynchronousFileChannel.lock(long, long, boolean, A, java.nio.channels.CompletionHandler<java.nio.channels.FileLock, ? super A>)Java 檔。

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

適用於