1

所以我需要创建一个文件,然后写一行,这必须是原子的。这样在初始化时没有其他进程可以修改该文件。
我有一个想法,在持有锁的同时锁定不同的东西,执行操作然后释放锁以让对方进入。但这很乏味,也可能是错误的,因为创建锁并获取它可能是不是原子的(我猜)。没有别的办法吗?

4

2 回答 2

3

我建议您编写临时文件,然后将其重命名为您的文件。我不确定这个操作在java中实现为所有操作系统的原子,但至少在Unix上你有机会,因为我认为它使用与mv原子相同的调用。

我猜它在 Windows 上不会是真正的原子。对于大多数应用程序来说,它将是“几乎是原子的”。

于 2012-11-27T14:43:37.873 回答
0

如果您想要一些可以保护其他进程的东西,我建议您阅读http://en.wikipedia.org/wiki/File_locking并利用 JNI 进入操作系统级别。

于 2012-11-27T14:45:38.737 回答