java 中的 FileLock 在同一进程内的多个线程中或不同进程之间或两者之间是否安全?



java 中的 FileLock 在同一进程内的多个线程中或不同进程之间或两者之间安全吗?

javadoc 说:

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

文件锁定对象可由多个并发线程安全使用。

我真的不明白:这是否意味着 FileLock 在同一个进程中的多个线程、多个不同进程之间或两者之间是安全的?

再往下:

此文件锁定 API 旨在直接映射到本机 底层操作系统的锁定工具。因此锁 保存在文件上应该对所有有权访问的程序可见 文件,无论这些程序使用哪种语言 写。

这强烈表明其目的是在不同的进程之间使用。

这一行:

它们不适合控制多个文件对文件的访问 同一虚拟机中的线程。

建议如果你有一个具有多个线程的进程,则不应使用它。在这种情况下,您可以改用synchronized部分或ReadWriteLock

它说,当你将它们视为纯Java对象时,这些对象是线程安全的,但它们不会阻止其他线程打开同一个文件。也就是说,当您查看它们提供的服务时,它们并不安全。

最新更新