ConcurrentHashMap使用场景
时间: 2023-08-28 15:20:49 浏览: 84
ConcurrentHashMap适用于多线程环境下对全局变量进行操作的场景。与HashMap相比,ConcurrentHashMap是线程安全的,能够在高并发的情况下保证操作的安全性。它使用CAS和Synchronized机制来实现线程安全,避免了使用锁对整个集合进行同步,提高了效率。ConcurrentHashMap在更新时只会局部锁住某部分数据,而同步读取操作则是完全非阻塞的。因此,当项目中的全局变量需要被多个线程同时操作时,可以考虑使用ConcurrentHashMap来保证线程安全和高效性。 [2]
另外,与Hashtable相比,ConcurrentHashMap具有一些不同之处。Hashtable对get、put和remove操作都使用了同步操作,同步级别是针对Hashtable对象进行同步的。这意味着,如果有一个线程正在遍历Hashtable,其他线程将无法使用该集合,从而对性能和吞吐量产生影响。然而,ConcurrentHashMap只对put和remove操作使用了同步操作,而get操作并不受影响。此外,当使用Hashtable进行遍历时,如果其他线程包括本线程对Hashtable进行了更新操作,会抛出ConcurrentModificationException异常。但如果使用ConcurrentHashMap,就不用考虑这个问题了。因此,当需要在多线程环境下进行集合操作时,可以优先考虑使用ConcurrentHashMap而不是Hashtable。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [ConcurrentHashMap的作用与用法](https://blog.csdn.net/qq_37488998/article/details/109715821)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [ConcurrentHashMap的使用场景](https://blog.csdn.net/NeilGY/article/details/80430201)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [ConcurrentHashMap使用场景、总结、对比Hashtable、ConcurrentSkipListMap、几种队列;J.U.C线程池、七个...](https://blog.csdn.net/qq_42722241/article/details/108147008)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]