java中的FileLock在同一进程内或不同进程之间或两者之间是否安全跨多个线程?
javadoc说:
文件锁代表整个 Java 虚拟机持有。它们不适用于控制同一虚拟机内的多个线程对文件的访问。
文件锁对象可以安全地被多个并发线程使用。
我真的不明白:这是否意味着 FileLock 在同一个进程内的多个线程之间、多个不同进程之间或两者之间是安全的?
java中的FileLock在同一进程内或不同进程之间或两者之间是否安全跨多个线程?
javadoc说:
文件锁代表整个 Java 虚拟机持有。它们不适用于控制同一虚拟机内的多个线程对文件的访问。
文件锁对象可以安全地被多个并发线程使用。
我真的不明白:这是否意味着 FileLock 在同一个进程内的多个线程之间、多个不同进程之间或两者之间是安全的?
再向下:
此文件锁定 API 旨在直接映射到底层操作系统的本机锁定设施。因此,文件上的锁应该对所有有权访问该文件的程序可见,而不管这些程序是用什么语言编写的。
这强烈表明它的目的是在不同的进程之间使用。
这一行:
它们不适用于控制同一虚拟机内的多个线程对文件的访问。
如果您有一个具有多个线程的进程,建议您不要使用它。在这种情况下,您可以改用synchronized
section 或ReadWriteLock
.
它说当您将对象视为普通 Java 对象时,它们是线程安全的,但它们不会阻止其他线程打开同一个文件。也就是说,当您查看它们提供的服务时,它们并不安全。