【发布时间】:2012-03-28 09:03:04
【问题描述】:
我想知道是否需要同步或使用并发类,或者相反,如果对映射的唯一修改正在更改,那么在多线程环境中使用非并发类并且不对映射进行同步是否是线程安全的地图的值。
我问这个的原因是 HashMap(和其他非并发地图文档)有这样的评论:
请注意,此实现不同步。 如果多个线程同时访问一个哈希映射,并且至少有一个 线程在结构上修改映射,它必须是 外部同步。 (结构修改是任何操作 添加或删除一个或多个映射;只是改变价值 与实例已包含的键关联的不是 结构修改。)这通常是通过 在一些自然封装地图的对象上进行同步。
这让我相信,如果修改不是结构性的(即没有添加或删除),我应该能够更新(非并发)地图无同步。
我读对了吗?即更新映射中的值是原子过程吗?
【问题讨论】:
标签: java collections concurrency map atomic