java中的FileLock在同一进程内或不同进程之间或两者之间的多个线程中是否安全?
javadoc说:
代表整个Java虚拟机保存文件锁。它们不适合控制同一虚拟机中多个线程对文件的访问。
文件锁对象可安全地供多个并发线程使用。
我真的不明白:这是否意味着FileLock在同一个进程中的多个线程之间,多个不同进程之间或两者之间是安全的?
答案 0 :(得分:2)
它表示当您将它们视为普通Java对象时,这些对象是线程安全的,但它们不会阻止其他线程打开同一个文件。也就是说,当您查看他们提供的服务时,它们并不安全。
答案 1 :(得分:2)
再向下:
此文件锁定API旨在直接映射到本机 底层操作系统的锁定设施。因此锁 保存在文件中的应该对所有可以访问的程序可见 该文件,无论这些程序的语言是什么 写入。
这有力地表明其目的是在不同的过程之间使用。
这一行:
如果您有一个包含多个线程的进程,它们不适合控制多个文件的访问 同一个虚拟机中的线程。
建议您不要使用它。在这种情况下,您可以使用synchronized
部分或ReadWriteLock
。