你需要同步HashMap的阅读吗?

时间:2015-11-29 19:40:27

标签: concurrency hashmap synchronization

我有一个java.util.HashMap个对象。我保证写入HashMap是由单个专用线程完成的。但是,从同一个HashMap对象读取可以从当时的多个线程中完成。有这样的实施可以解决任何问题吗?

1 个答案:

答案 0 :(得分:0)

是的,你可以通过这样的实现遇到大麻烦!

向HashMap添加值不是原子操作。因此,如果您从另一个线程读取映射,则当另一个线程同时添加值时,您可能会看到不一致的状态。这将导致运行代码时出现意外的意外行为或异常。此外,如果没有同步,则无法保证更新的变量对其他线程可见。

正如11thdimenstion在您的问题评论中所述,您应该将ConcurrentHashMap用于您的目的,或者正确地同步您对地图的读取写入权限。