iteye_13085 2012-05-02 12:52
浏览 176
已采纳

请问我这段业务如何用double check lock 做同步处理

private volatile static ConcurrentHashMap> cacheClass=new ConcurrentHashMap>();

List classes=cacheClass.get(classPrefix);
if(null == classes) {
classes=new ArrayList();
classTo=new ClassTO(classKey);
} else {
for(ClassTO tmp: classes) {
if(classKey.equals(tmp.getKey())) {
classTo=tmp;
break;
}
}
}

methodTo=classTo.get(methodAndParamskey);
if(null == methodTo) {
methodTo=new MethodTO(methodAndParamskey);
}

doCache(result, data, methodTo, method);
classTo.add(methodTo);
CacheHandler.getCacheInstance().set(methodAndParamskey, data.getExpiration(), methodTo);
classes.add(classTo);
cacheClass.put(classPrefix, classes);

  • 写回答

3条回答 默认 最新

  • andy_zheng2011 2012-05-04 09:14
    关注

    是的,ConcurrentHashMap本来就是线程安全的。不需要再控制了~
    现在并发编程一般建议采用java concurrent API,它是语句块级别的控制。毕竟是大牛编写的,已经封装的很好了~ 没有必要再用原生的方式了撒!即费事又费时,还有可能不讨好,哈哈~ 8)

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

报告相同问题?

悬赏问题

  • ¥60 Cocos creator缓动问题
  • ¥40 微信小程序 使用vant组件ActionSheet 下拉面板,内容区域滚动会触发。scroll-view自定义下拉刷!即使设置停止下拉刷新也不行。
  • ¥15 专业问题提问,7月5号2点之前
  • ¥25 使用cube ai 导入onnx模型时报错
  • ¥15 关于#微信小程序#的问题:用一个网页显示所有关联的微信小程序数据,包括每个小程序的用户访问量
  • ¥15 root的安卓12系统上,如何使apk获得root或者高级别的系统权限?
  • ¥20 关于#matlab#的问题:如果用MATLAB函数delayseq可以对分数延时,但是延时后波形较原波形有幅度上的改变
  • ¥15 使用华为ENSP软件模拟实现该实验拓扑
  • ¥15 通过程序读取主板上报税口的数据
  • ¥15 matlab修改为并行