码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Java中线程安全的集合


    使用Collections包装线程不安全的类,使其成为线程安全的类,使用的是sync,效率并无实质提升:

    concurrent包下的线程安全集合:blocking,copyonwrite,concurrent。

     

    coucurrentMap每个方法都是原子的,但是几个方法的组合并不是原子的。concurrentMap是细粒度的锁。普通的HashMap在扩容的时候会有并发死链的问题。

    ConcurrentHashMap的原理:‘

     ConcurrentHashMap在扩容时保证线程安全:

     

    在扩容过程中,处理完毕的链表头节点置为fnode,表明此链表已经处理完毕。其他线程来get,则会到新的线程中去get。

     

    TreeBin是红黑树的头结点,TreeNode是红黑树的树节点。

    整个get流程:

    hash为负数则去新的扩容的HashMap查找元素。

    ConcurrentHashMap不允许有空的键值,put的过程中,只有发生下标冲突,才会使用sync,而且锁的是桶的头节点。

    初始化HashTable,只有一个线程成功,只有一个线程cas成功,然后初始化哈希表:

     addCount:当哈希表put成功后,增加计数。

    put流程,插入新值:

    进入下面的else,说明桶下标冲突了,此时需要对链表头节点加锁,fh >= 0,说明是普通节点,进行普通的插入流程即可,bigcount代表链表长度。

     节点的类型是红黑树:

     

     bigcount(节点数)和门限值比较,看是否需要转化为红黑树:

     

     

     

  • 相关阅读:
    LLMs之Baichuan 2:《Baichuan 2: Open Large-scale Language Models》翻译与解读
    YoloV8改进策略:独家原创,LSKA(大可分离核注意力)改进YoloV8,比Transformer更有效,包括论文翻译和实验结果
    CentOS7关闭SELinux
    Intel汇编-CMP比较
    Python爬虫是什么?
    关于海洋湍流的一些笔记
    [Linux] GRUB引导 学习笔记(一)
    机器学习中的“泛化”:模型过拟合与欠拟合,到底怎么回事?
    ARM64 linux并发与同步之内存屏障
    机器人制作开源方案 | 四轴飞行器
  • 原文地址:https://blog.csdn.net/qq_16725749/article/details/126243432
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号