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一或FileChannel#tryLock(long,long,boolean) tryLock方法或类的方法或类AsynchronousFileChannel#lock(long,long,boolean,Object,CompletionHandler) lockAsynchronousFileChannel#tryLock(long,long,boolean) tryLockAsynchronousFileChannel的方法FileChannel获取锁时,都会创建文件锁对象。

文件锁定对象最初有效。 在调用方法、关闭用于获取方法的通道或终止Java虚拟机(以先来者为准)来释放#release release锁之前,它一直有效。 可以通过调用 #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文档java.nio.channels.FileLock

本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。

构造函数

名称 说明
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, Int32)

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

(继承自 Object)
Wait(Int64)

使当前线程等待直到唤醒,通常是通过 <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)

扩展方法

名称 说明
GetJniTypeName(IJavaPeerable)

获取实例 self类型的 JNI 名称。

JavaAs<TResult>(IJavaPeerable)

尝试强制self键入TResult,检查强制是否在Java端有效。

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

表示文件区域锁定的令牌。

TryJavaCast<TResult>(IJavaPeerable, TResult)

尝试强制self键入TResult,检查强制是否在Java端有效。

适用于