hashmap的线程安全问题

2022-07-27 13:47:16 浏览数 (1)

证明hashmap有线程安全问题

举个场景,resize的过程中,会创建一个新的空数组,然后把老数据写入到新的数组里面去。如果在数据迁移之前有线程检索数据,可能得不到正确的结果

怎么解决线程安全问题,可以使用线程安全的hashmap。

hashtable是hashmap的线程安全版本;集合工具类也可以把hashmap转成线程安全的;concurrenthashmap是jdk并发包提供的线程安全的hashmap。

前两种解决方式大同小异,都是锁住整个容器,而且读写互斥。

我们比较推荐的concurrenthashmap则是通过缩小锁的粒度、并且读操作不加锁,提高了并发状态下的读写性能

0 人点赞