补上一篇文章

1.ConcurrentHashMap的高效并发机制是通过以下三方面来保证的

 通过锁分段技术保证并发环境下的写操;通过 HashEntry的不变性、Volatile变量的内存可见性和加锁重读机制保证高效、安全的读操作;通过不加锁和加锁两种方案控制跨段操作的的安全性。

2.ConcurrentHashMap是如何加锁的

ConcurrentHashMap,它通过在链表上加锁来实现同步的。则看出ConcurrentHashMap其实就多增加了锁的个数,效率效率就提高;而HashTable是通过在每个方法上加Synchronized来实现同步的,这样使得效率略低于ConcurrentHashMap的原因。

3.ConcurrentHashMap的put方法实现步骤

 1、首先,判断key和value是否为null,其中一个为null,则抛出NullPointerException()。

注:ConcurrentHashMap的key和Value都不能为null

 2、计算哈希值:spread(key.hashCode());

3、根据哈希值计算放在table中的位置

4、通过哈希值执行插入或替换操作

如果这个位置没有值,直接将键值对放进去,不需要加锁
如果要插入的位置是一个forwordingNode节点,表示正在扩容,那么当前线程帮     助扩容3.3 加锁。以下操作都需要加锁
如果要插入的节点在链表中,遍历链表中的所有节点,如果某一节点的key哈希值和key与参数相等,替换节点的value,记录被替换的值;如果遍历到了最后一个节点,还没找到key对应的节点,根据参数新建节点,插入链表尾部
如果要插入的节点在树中,则按照树的方式插入或替换节点。如果是替换操作,记录被替换的值
5、判断如果节点数量是大于8,就将链表转化成红黑树(binCount >= TREEIFY_THRESHOLD)
6、如果操作3中执行的是替换操作,返回被替换的value,然后程序结束

7、如果能执行到这一步,说明节点不是被替换的,是被插入的,所以要将map的元素数量加1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一篇关于Linux操作系统选题的文章: 如何选择最适合你的Linux操作系统? Linux是一种自由和开放源代码的操作系统,它具有强大的安全性、稳定性和可定制性。有许多种不同的Linux发行版,包括Ubuntu、Debian、Red Hat、Fedora、CentOS、openSUSE等等。每个发行版都有其自己的特点和适用场景。在选择使用Linux操作系统时,你需要考虑以下几个因素。 1. 用户目的和需求 首先,你需要明确你使用Linux的目的和需求。你是想用它作为桌面操作系统还是服务器操作系统?你需要使用它进行开发、编程或者仅仅是日常上网和办公?你需要一个易于使用、图形化的系统还是更喜欢通过命令行操作? 如果你是一位开发者,你可能需要一个专业的发行版,如Red Hat Enterprise Linux(RHEL)或CentOS。如果你是一位桌面用户,你可能会更喜欢易于使用的Ubuntu或Linux Mint。如果你是一位服务器管理员,你可能需要一个稳定、安全的系统,如Debian或OpenSUSE。 无论你的需求是什么,都可以在Linux发行版中找到一个最适合你的版本。 2. 发行版的稳定性和安全性 稳定性和安全性是选择Linux发行版时需要考虑的另外两个重要因素。如果你需要一个稳定的系统,那么Debian、CentOS、RHEL等发行版可能是你的首选,因为它们比较注重发布稳定的版本。 另一方面,如果你需要一个更注重安全性的系统,那么像Fedora和Ubuntu这样的发行版可能更适合你。这些版本通常会在较短时间内发布安全丁,以确保系统的安全性。 3. 发行版的易用性和可定制性 易用性和可定制性也是选择Linux发行版时需要考虑的因素。如果你是一位新手,你可能希望一个易于使用的发行版,如Ubuntu或Linux Mint。这些发行版通常会提供一个图形化的用户界面,使得操作系统的使用变得更加简单。 另一方面,如果你需要一个高度可定制的系统,那么像Arch Linux这样的发行版可能更适合你。这些发行版通常会提供一个最小的安装,让用户自己安装和配置他们所需要的软件和功能。 4. 社区支持 最后一个需要考虑的因素是发行版的社区支持。Linux操作系统是一个由全球各地的开发者和用户组成的庞大社区,因此选择一个拥有活跃社区的发行版非常重要。 活跃的社区可以保证你所使用的发行版得到及时的支持和更新,可以让你及时解决出现的问题。如果你是一位开发者或者管理员,你可能会更关注社区的支持和反馈。 总而言之,选择一个最适合你的Linux发行版需要考虑多个因素。最重要的是,你需要明确自己的需求,选择一个稳定、安全、易用和可定制的发行版,并考虑社区的支持和反馈。在选择时,你可以通过试用不同的发行版来找到最适合你的版本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值