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

2023-06-22 305 0

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

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

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

问法本身有点儿问题。

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

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

回答

相关文章

nuxt2部署静态化和ssr的时候访问首页先报404再出现首页为什么?
`clip-path` 如何绘制圆角平行四边形呢?
多线程wait方法报错?
VUE 绑定的方法如何直接使用外部函数?
vue2固定定位该怎么做?
谁有redis实现信号量的代码,希望借鉴一下?