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
。
由 position
参数 size
指定的区域不需要包含在实际基础文件内,甚至不需要重叠。 锁区域的大小固定;如果锁定区域最初包含文件的末尾,并且文件增长到超出该区域,则锁不会覆盖文件的新部分。 如果文件的大小预期会增大,并且需要对整个文件的锁,则应该锁定一个从零开始且不超过文件预期最大大小的区域。 双参数 #lock(Object,CompletionHandler)
方法只锁定大小 Long#MAX_VALUE
区域。 如果此 Java 虚拟机已保留与所请求区域重叠的锁,或者已调用此方法来锁定重叠区域且该操作尚未完成,则此方法将 OverlappingFileLockException
引发。
某些操作系统不支持以异步方式获取文件锁的机制。 因此,实现可能会从后台线程或关联线程池中的线程执行的任务中获取文件锁。 如果存在许多未完成的锁操作,则可能会无限期地使用 Java 虚拟机中的线程。
某些操作系统不支持共享锁,在这种情况下,共享锁的请求会自动转换为独占锁的请求。 无论新获取的锁是共享锁还是独占锁,都可以通过调用生成的锁对象 FileLock#isShared() isShared
的方法进行测试。
文件锁代表整个 Java 虚拟机保留。 它们不适合控制同一虚拟机中多个线程对文件的访问。
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。