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 操作的挂起结果。 方法FutureFuture#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 表示挂起的结果。 方法FutureFuture#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 虚拟机保留。 它们不适合控制同一虚拟机中多个线程对文件的访问。

适用于 . 的 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 属性许可证中所述的术语使用。

适用于