java的HashMap的get方法线程安全吗?

在并发情景下,如果只用HashMap的get方法(不用put),因为我的Map是放配置数据的,启动完成后里面的数据不会改变,线程是否安全?


回答:

并发的线程安全,通常指多个线程,同时读写,导致变量的值存在不一致等情况。
那只读不写,也就没这种风险了。
不过为了避免,建议封装一层工具类,这个存放配置的hashMap作为内部参数,工具类对外只提供get方法,这样约束一下业务代码,不要直接操作hashMap,而且后续如果需要提供修改等方法的时候,也方便替换为线程安全的方式


回答:

只读操作是线程安全的,只要确保new的时候(看你是否延迟加载了)线程安全,以及初始化的时候不要去get就行.


回答:

问法本身有点儿问题。

谈及线程安全,需要从原子性、可见性、有序性三个角度出发。显然 HashMap 并不满足这些条件,所以它是非线程安全的。

但如果确实如你所言的这种场景的话,此时业务上不会出现脏读、幻读等问题,但并不能说它是线程安全的

以上是 java的HashMap的get方法线程安全吗? 的全部内容, 来源链接: utcz.com/p/945211.html

回到顶部