我在我的代码中使用属性,我对多重访问感到好奇。 我处于以下情况:
public Class MClass{
private static Properties dicoCategories = new Properties(myPropertyFile);
public void changeProperties(){
// changing properties and updating the file
}
}
MyClass被多次实例化,每次实例都可以修改属性文件 .我想我可以使用临时文件和锁来管理这种并发性,但我更愿意使用已经存在的函数。然而,我没有找到。我的问题是:Property 类是否以特殊方式管理并发性,或者是否存在多用户等效方式?
最佳答案
虽然 Properties
文件是线程安全的,但如果您使用多次调用修改它,您仍然需要确保线程安全。例如
properties.set(name, value);
是线程安全的,但是
if (properties.get(name) == null) {
properties.set(name, value);
}
在没有额外保护的情况下不是线程安全的,您应该围绕这些序列进行同步。
从您的问题中不清楚您的真正问题是否是多个进程 访问此属性文件,如果是这样,那么也许文件锁定是合适的。参见 this question/answer了解更多信息。
关于java - 是否可以使用单个属性文件来管理并发写入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17484846/