HashMap是最常用的一种Map,属于非线程安全的Map实现类。好处是效率高,因为不用考虑线程安全,任何时候都是无脑的直接操作。
在web项目中的单线程代码中,使用HashMap是没有问题的,但是一旦涉及到同时会有多个线程访问同一个HashMap时,则会导致程序结果产生偏差。
我去看了jdk中的HashMap类的源码和注释,总结了一下这种情况如下:如果有多个线程同时访问同一个HashMap实例,其中只要有一个线程结构性修改了该HashMap实例,该HashMap实例就必须通过外部手段保证其线程安全(结构性修改是指任何对该HashMap实例进行的增加或者删除操作。如果只是改变HashMap实例中已存在的key-value元素中的value不算
利用Collections将非线程安全的Map转换成线程安全的Map
最新推荐文章于 2024-08-08 10:02:07 发布
HashMap是非线程安全的Map实现,适合单线程环境。在多线程环境中,若需确保数据一致性,需要将其转换为线程安全的Map。可以使用Collections.synchronizedMap()方法将HashMap转换,以保证在并发访问时的安全性。
摘要由CSDN通过智能技术生成