我正在尝试使用Java FileLock写入文件,以禁止所有其他进程和线程从该文件读取或写入该文件,直到完成为止。有了this question及其答案,在我看来,这是我想要的理想工具-文件访问的互斥体。

但是,我非常关注JavaDocs的这段文字:



有人可以缓解我的恐惧或为我指明正确的方向吗?听起来FileLock根本无法将另一个线程保留在文件中,即使另一个线程已经获得了它也是如此。如果是这种情况,是否还有另一种规范的Java方法来执行此操作以保护其免受其他线程的侵害?

最佳答案

FileLock是进程级别的锁,因此不会保护文件免受具有该锁的进程中多个线程的并发访问。

您需要使用FileLock的组合来防止来自其他进程的并发访问,并需要使用进程中的某些其他同步机制(例如用于访问文件的synchronized方法)来保护自己的线程不进行并发访问。

关于java - 使用FileLock锁定Java中的文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30336109/

10-12 00:12
查看更多