xycshh 2010-02-12 12:14
浏览 273
已采纳

设计问题

原来一直把用户信息保存在session中,后来发现如果这样做会很消耗内存,于是我设计了一个类,里面有个HashMap对象根据 key=sessionid,value=用户信息 来保存用户信息。代码如下:
public class SessionManager {
private static SessionManager instance=new SessionManager();
private Map sessionMap=Collections.synchronizedMap(new HashMap());
private SessionManager(){
super();
}
public static SessionManager getInstance(){
return instance;
}
public Userinfo getUserinfo(String sessionid){
if(sessionMap.containsKey(sessionid))
return (Userinfo)sessionMap.get(sessionid);
else return null;
}
public void setUserinfo(String sessionid,Userinfo userinfo){
sessionMap.put(sessionid, userinfo);
}
public void removeSession(String sessionid){
sessionMap.remove(sessionid);
}

}
现在的疑惑是private Map sessionMap=Collections.synchronizedMap(new HashMap());这样可以保证线程安全,但是也很消耗资源,不知道大家在项目中是怎么解决这个问题的。

  • 写回答

2条回答 默认 最新

  • yonglin4605 2010-02-12 13:38
    关注

    你确定有必要使用Collections.synchronizedMap(new HashMap())来保证线程安全吗

    同步之后的运行效率会降低好几倍。

    你有多少用户在线啊?一般不可能因为这么几个对象的创建就影响性能的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄