FileChannel.Lock 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
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
若要请求独占锁,在这种情况下,必须打开此通道进行写入(并可能读取)
返回
表示新获取的锁的锁对象
- 属性
例外
如果 position
为 size
负数,则为负值。
如果此通道已关闭,则为 。
如果请求的区域与现有锁或挂起的锁请求重叠,
如果通道未在读取模式下打开,但共享为 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 属性许可证中所述的术语使用。