java哈希映射线程可见性
我在初始化时完全加载了一个
Java HashMap,但是在初始化多个线程之后,HashMap将读取数据.我想避免任何类型的同步,因为地图基本上只读,从不改变.但是我可以保证所有的线程都可以看到所有的键和值吗?
解决方法
如果地图的内容从不改变,那么你没有问题.只有当变量的内容发生变化时,内存模型可见性问题就会发挥作用.
您可能希望同步地图的初始化,以确保没有线程在完全初始化之前访问它,并确保加载到地图中的值都可见. 编辑:本来我完全忽略了地图如何初始化的问题.阅读one of the Pugh articles(再次)似乎地图真的需要是最终的,以便初始化数据变得可见:
有一个条件列出强制“先发生”的关系,在Java规范中给出,我应该在这里引用它(或者如果有人在他的答案中我会投票).静态变量和持有者成语当然是一种方式.问题是相当广泛的,因为它没有指定地图如何初始化,如果你发布一个问题描述你如何提出初始化,你可能会得到一个更直接有用的答案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- GDI不规则圆弧菜单控件----------WinForm控件开发系列
- 多线程 – 枚举类型 – 线程安全
- Java秒杀系统实战系列~整合Shiro实现用户登录认证
- SpringMVC中controller返回json数据的方法
- 未清SO关闭处理
- Java优化器是否会记住计算值?
- Java往返String – > float – > String甚至(某些
- 远程对象中javax.json.JsonValue的Java RMI NoClassDefFoun
- iOS Remote Notification远程消息推送处理
- Java servlet 使用 PrintWriter 时的编码与乱码的示例代码