AsynchronousFileChannel.Lock 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
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)
此頁面的部分是根據 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 虛擬機保留。 它們不適合控制相同虛擬機內多個線程對檔案的存取。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。