gpt4 book ai didi

java - 如何保护阅读文件

转载 作者:行者123 更新时间:2023-11-29 08:51:47 25 4
gpt4 key购买 nike

我有多个线程读取一个文件。文件路径包含一个符号链接(symbolic link),该链接由后台守护程序(不是 Java 应用程序)定期更新。

例如,考虑这个文件路径 /home/user/me/data/current/file.outcurrent 是指向实际目录的符号链接(symbolic link),其中包含文件 file.outcurrent 由守护进程定期更新。

Java 线程只读取文件(不写入文件)。如何确保线程可以安全地读取文件?我正在考虑锁定机制,但我无法让守护进程在更新符号链接(symbolic link)时锁定。

提前致谢。

最佳答案

我不认为你需要一把锁。您要么无法在更新链接时打开文件(除非由守护程序在 atomic manner 中完成),要么可以。一旦 Java 应用程序打开文件进行读取(如果链接未以原子方式更新,则可能经过多次尝试),移动、删除或重命名文件(指向该文件的符号链接(symbolic link))都无关紧要 - Java应用程序仍然能够读取该文件,因为 Linux 保留了最初打开的文件(句柄/ inode )供 Java 应用程序使用。
这也是为什么有时删除文件并不能释放磁盘空间的原因:某些进程仍在使用它。只有当已删除文件的所有打开文件句柄都关闭时,已删除文件使用的磁盘空间才可用(空闲)。

关于java - 如何保护阅读文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22470200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com