假设有两个不同的Java程序正在尝试从同一目录(Windows或Linux)读取数据和/或向其写入数据。
他们不应该同时做。一个人怎么能保证呢?
到目前为止,我最好的主意是lock
在开始使用目录之前先创建一个空文件,然后再将其删除。但是,检查文件是否存在并写入文件是非原子性的,因此这可能会失败。
所述Files.createFile()
确实这样一个原子操作:
创建一个新的空文件,如果文件已经存在则失败。检查文件是否存在以及如果不存在则创建新文件是单个操作,对于可能影响目录的所有其他文件系统活动而言,这是一个原子操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句