博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 集合 HashMap ConcurrentHashMap
阅读量:6578 次
发布时间:2019-06-24

本文共 434 字,大约阅读时间需要 1 分钟。

hot3.png

参考链接:

1. HashMap为什么是线程不安全的?

HashMap底层是一个Entry数组。如果两个Key的Hash值相同,则会产生碰撞冲突。

HashMap扩容时会生成一个新的数组。

2. ConcurrentHashMap

ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用了多个锁来控制对Hash表的不同部分进行的修改。ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的HashTable, 它们有自己的锁。只要多个修改操作发生在不同的段上,它们就可以并发进行。

ConcurrentHashMap是线程安全的类,并不能保证使用了ConcurrentHashMap的操作都是安全的。

ConcurrentHashMap的get不需要加锁,put操作需要加锁。

 

转载于:https://my.oschina.net/u/3781047/blog/1628709

你可能感兴趣的文章
从零开始实现一个RPC框架(三)
查看>>
Leetcode javascript 3 longest-substring-without-repeating-characters
查看>>
JavaScript 复习之 Date 对象
查看>>
openstack从入门到放弃
查看>>
小程序 生成携带参数的小程序码
查看>>
小程序scroll-view换行问题
查看>>
echarts的渐变色的设置
查看>>
1.6 清单文件中的provider
查看>>
ConstraintLayout总览
查看>>
[Azure DevOps 系列] 二、使用Azure DevOps构建ASP.NET Core应用
查看>>
从源码安装tensorflow CPU版本 的天坑填埋记录
查看>>
iOS C++ 兼容XMPPFramework @import
查看>>
多个Git账户的配置
查看>>
MapReduce分布编程模型之映射函数与化简函数简介
查看>>
Vue 通过ref 控制滚动距离
查看>>
聊聊elasticsearch的SeedHostsResolver
查看>>
Flutter自定义Dialog,简洁好看,丰富多样
查看>>
用Android SDK Build Tools手动构建APK
查看>>
[开发效率]Kotlin之扩展
查看>>
基于Mixin Network的 C# 比特币开发教程:创建机器人
查看>>