我有一个 Singleton 类处理一种在 Hashmap 中具有不同对象的缓存。(键的格式直接链接到存储在映射中的对象类型 - 因此映射是 )
地图上可能有三种不同的操作:添加、获取、删除。
我使用公共入口点方法(无密集访问)保护了对地图的访问:
public synchronized Object doAction(String actionType, String key, Object data){
Object myObj = null;
if (actionType.equalsIgnorecase("ADD"){
addDataToMyMap(key,data);
} else if (actionType.equalsIgnorecase("GET"){
myObj = getDataFromMyMap(key);
} else if (actionType.equalsIgnorecase("REM"){
removeDataFromMyMap(key);
}
return myObj;
}
笔记:
地图是私人的。方法 addDataToMyMap()、getDataFromMyMap() 和 removeDataFromMyMap() 是私有的。只有入口点方法是公共的,除了类本身的静态 getInstance() 之外别无其他。
您是否确认并发访问地图是线程安全的,因为除了通过该方法之外没有其他方法可以使用地图?
如果地图是安全的,我想这个原则可以应用于任何其他类型的共享资源。
非常感谢您的回答。
大卫