FileChannel.Lock 方法

定义

重载

Lock()

获取此通道文件上的独占锁。

Lock(Int64, Int64, Boolean)

获取此通道文件的给定区域的锁。

Lock()

获取此通道文件上的独占锁。

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

返回

表示新获取的锁的锁对象

属性

例外

文件通道已关闭。

此频道未打开以供写入。

已保留一个与此锁请求重叠的锁,或者另一个线程正在等待获取将与此请求重叠的锁。

调用线程在等待获取锁时中断。

调用线程等待获取锁时通道已关闭。

如果在获取请求的锁时发生另一个 I/O 错误。

注解

获取此通道文件上的独占锁。

对窗体 fc.lock() 的此方法的调用的行为方式与调用方式完全相同

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

适用于 . 的 java.nio.channels.FileChannel.lock()Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

适用于

Lock(Int64, Int64, Boolean)

获取此通道文件的给定区域的锁。

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

参数

position
Int64

锁定区域要启动的位置;必须为非负值

size
Int64

锁定区域的大小;必须为非负值,并且 sum position + size 必须为非负值

shared
Boolean

true 若要请求共享锁,在这种情况下,必须打开此通道才能读取(并可能写入): false 若要请求独占锁,在这种情况下,必须打开此通道进行写入(并可能读取)

返回

表示新获取的锁的锁对象

属性

例外

如果 positionsize 负数,则为负值。

如果此通道已关闭,则为 。

如果请求的区域与现有锁或挂起的锁请求重叠,

如果通道未在读取模式下打开,但共享为 true。

如果通道未在写入模式下打开,但共享为 false。

如果此方法正在执行时,此通道由另一个线程关闭。

如果线程在等待所需文件锁的状态中断,则为 。

如果发生另一个 I/O 错误,则为 。

注解

获取此通道文件的给定区域的锁。

此方法的调用将阻止,直到区域可以锁定、此通道关闭或调用线程中断(以先来为准)。

如果在调用此方法期间由另一个线程关闭此通道,则将引发一个 AsynchronousCloseException 通道。

如果在等待获取锁时调用线程中断,则会设置其中断状态,并引发一个 FileLockInterruptionException 。 如果在调用此方法时设置了调用方中断状态,则会立即引发该异常;不会更改线程的中断状态。

position 参数 size 指定的区域不需要包含在实际基础文件内,甚至不需要重叠。 锁区域的大小固定;如果锁定区域最初包含文件的末尾,并且文件增长到超出该区域,则锁不会覆盖文件的新部分。 如果文件的大小预期会增大,并且需要对整个文件的锁,则应该锁定一个从零开始且不超过文件预期最大大小的区域。 零自变量 #lock() 方法只锁定大小 Long#MAX_VALUE区域。

某些操作系统不支持共享锁,在这种情况下,共享锁的请求会自动转换为独占锁的请求。 无论新获取的锁是共享锁还是独占锁,都可以通过调用生成的锁对象 FileLock#isShared() isShared 的方法进行测试。

文件锁代表整个 Java 虚拟机保留。 它们不适合控制同一虚拟机中多个线程对文件的访问。

适用于 . 的 java.nio.channels.FileChannel.lock(long, long, boolean)Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

适用于