Share via


FileLock 类

定义

表示文件区域上的锁的标记。

[Android.Runtime.Register("java/nio/channels/FileLock", DoNotGenerateAcw=true)]
public abstract class FileLock : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.Lang.IAutoCloseable
[<Android.Runtime.Register("java/nio/channels/FileLock", DoNotGenerateAcw=true)>]
type FileLock = class
    inherit Object
    interface IAutoCloseable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
继承
FileLock
属性
实现

注解

表示文件区域上的锁的标记。

每次通过 类的 或 方法或 类的 FileChannel#lock(long,long,boolean) lock 或 方法在文件上获取锁时,AsynchronousFileChannel#lock(long,long,boolean,Object,CompletionHandler) lock都会创建文件锁AsynchronousFileChannel#tryLock(long,long,boolean) tryLock对象。AsynchronousFileChannelFileChannel#tryLock(long,long,boolean) tryLockFileChannel

文件锁对象最初有效。 它一直有效,直到通过调用 #release release 方法释放锁、关闭用于获取它的通道或终止 Java 虚拟机(以先到者为准)。 可以通过调用锁的 方法来测试锁 #isValid isValid 的有效性。

文件锁是 独占 的或 共享的。 共享锁可防止其他并发运行的程序获取重叠的独占锁,但允许它们获取重叠的共享锁。 独占锁可防止其他程序获取任一类型的重叠锁。 释放后,锁对其他程序可能获取的锁没有进一步影响。

锁是独占锁还是共享锁可以通过调用其 #isShared isShared 方法来确定。 某些平台不支持共享锁,在这种情况下,对共享锁的请求会自动转换为独占锁的请求。

单个 Java 虚拟机在特定文件上保留的锁不重叠。 方法 #overlaps overlaps 可用于测试候选锁范围是否与现有锁重叠。

文件锁对象记录文件通道,锁定所在的文件、锁的类型和有效性,以及锁定区域的位置和大小。 只有锁的有效性会随时间而变化;锁状态的所有其他方面都是不可变的。

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

文件锁对象可以安全地供多个并发线程使用。

“pdep”><h2> 平台依赖项 </h2>

此文件锁定 API 旨在直接映射到基础操作系统的本机锁定设施。 因此,对于有权访问该文件的所有程序而言,文件上保留的锁应该可见,而不管这些程序是用哪种语言编写的。

锁实际上是否阻止另一个程序访问锁定区域的内容取决于系统,因此未指定。 某些系统的本机文件锁定功能只是 咨询,这意味着程序必须合作遵守已知的锁定协议才能保证数据完整性。 在其他系统上,本机文件 锁是必需的,这意味着,如果一个程序锁定文件的某个区域,则实际上会阻止其他程序以违反锁的方式访问该区域。 在其他系统上,本机文件锁是咨询的还是强制的,可以按文件进行配置。 为了确保跨平台的行为一致且正确,强烈建议使用此 API 提供的锁,就像它们是咨询锁一样。

在某些系统上,获取文件区域的强制锁会阻止该区域成为 java.nio.channels.FileChannel#map <i>mapped into memory</i>,反之亦然。 应为组合锁定和映射的程序做好准备,使此组合失败。

在某些系统上,关闭通道会释放 Java 虚拟机在基础文件上持有的所有锁,而不管这些锁是通过该通道获取的,还是通过同一文件上打开的另一个通道获取的。 强烈建议在程序中使用唯一通道来获取任何给定文件上的所有锁。

某些网络文件系统允许仅当锁定区域与页对齐且是基础硬件的页大小的倍数时,才将文件锁定与内存映射文件一起使用。 某些网络文件系统不对超出特定位置的区域(通常是 2<sup>30</sup> 或 2<sup>31</sup>)实现文件锁定。 通常,在锁定驻留在网络文件系统上的文件时,应非常小心。

在 1.4 中添加。

java.nio.channels.FileLockJava 文档。

此页面的部分内容是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的术语使用。

构造函数

FileLock(AsynchronousFileChannel, Int64, Int64, Boolean)

初始化此类的新实例。

FileLock(FileChannel, Int64, Int64, Boolean)

初始化此类的新实例。

FileLock(IntPtr, JniHandleOwnership)

创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。

属性

Class

返回此 Object的运行时类。

(继承自 Object)
Handle

基础 Android 实例的句柄。

(继承自 Object)
IsShared

指示此锁是否共享。

IsValid

指示此锁是否是有效的文件锁。

JniIdentityHashCode

表示文件区域上的锁的标记。

(继承自 Object)
JniPeerMembers

表示文件区域上的锁的标记。

PeerReference

表示文件区域上的锁的标记。

(继承自 Object)
ThresholdClass

此 API 支持 Mono for Android 基础结构,不应直接从代码使用。

ThresholdType

此 API 支持 Mono for Android 基础结构,不应直接从代码使用。

方法

AcquiredBy()

返回获取此锁时文件所在的通道。

Channel()

返回获取此锁所基于其文件的文件通道。

Clone()

创建并返回此对象的副本。

(继承自 Object)
Close()

此方法调用 #release 方法。

Dispose()

表示文件区域上的锁的标记。

(继承自 Object)
Dispose(Boolean)

表示文件区域上的锁的标记。

(继承自 Object)
Equals(Object)

指示其他某个对象是否“等于”此对象。

(继承自 Object)
GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
JavaFinalize()

当垃圾回收确定不再引用对象时,由对象上的垃圾回收器调用。

(继承自 Object)
Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
Overlaps(Int64, Int64)

指示此锁是否与给定的锁范围重叠。

Position()

返回锁定区域第一个字节的文件中的位置。

Release()

释放此锁。

SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
Size()

返回锁定区域的大小(以字节为单位)。

ToArray<T>()

表示文件区域上的锁的标记。

(继承自 Object)
ToString()

返回描述此锁的范围、类型和有效性的字符串。

UnregisterFromRuntime()

表示文件区域上的锁的标记。

(继承自 Object)
Wait()

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>。<>

(继承自 Object)
Wait(Int64)

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<>

(继承自 Object)
Wait(Int64, Int32)

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<>

(继承自 Object)

显式接口实现

IJavaPeerable.Disposed()

表示文件区域上的锁的标记。

(继承自 Object)
IJavaPeerable.DisposeUnlessReferenced()

表示文件区域上的锁的标记。

(继承自 Object)
IJavaPeerable.Finalized()

表示文件区域上的锁的标记。

(继承自 Object)
IJavaPeerable.JniManagedPeerState

表示文件区域上的锁的标记。

(继承自 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

表示文件区域上的锁的标记。

(继承自 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

表示文件区域上的锁的标记。

(继承自 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

表示文件区域上的锁的标记。

(继承自 Object)

扩展方法

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

表示文件区域上的锁的标记。

GetJniTypeName(IJavaPeerable)

表示文件区域上的锁的标记。

适用于