9

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

javadoc说:

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

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

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

4

2 回答 2

3

再向下:

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

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

这一行:

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

如果您有一个具有多个线程的进程,建议您不要使用它。在这种情况下,您可以改用synchronizedsection 或ReadWriteLock.

于 2012-05-10T09:56:07.123 回答
2

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

于 2012-05-10T09:46:07.330 回答