我在我的代码中使用了属性,我对多重访问感到好奇.我在以下情况中:
public Class MClass{
private static Properties dicoCategories = new Properties(myPropertyFile);
public void changeProperties(){
// changing properties and updating the file
}
}
Run Code Online (Sandbox Code Playgroud)
MyClass多次实例化,每个实例都可以修改属性文件.我想我可以使用临时文件和锁来管理这种并发,但我更喜欢使用已经存在的函数.但是,我没有找到.我的问题是:Property类是以特殊方式管理并发,还是有多用户等价?
尽管该Properties文件是线程安全的,但如果使用多个调用对其进行修改,则仍需要确保线程安全.例如
properties.set(name, value);
Run Code Online (Sandbox Code Playgroud)
是线程安全的,但是
if (properties.get(name) == null) {
properties.set(name, value);
}
Run Code Online (Sandbox Code Playgroud)
没有额外的防护,它不是线程安全的,你应该同步这些序列.
从您的问题中不清楚您的真正问题是多个进程访问此属性文件,如果是这种情况,那么文件锁定可能是合适的.有关详细信息,请参阅此问题/答案.
| 归档时间: |
|
| 查看次数: |
1193 次 |
| 最近记录: |