当前位置: 首页 > wzjs >正文

建设网站制作哪家好北京建网站多少钱

建设网站制作哪家好,北京建网站多少钱,印章制作软件在线制作,wordpress发展在 JDK 1.8 的 ConcurrentHashMap 中,之所以对“容器为空”和“计算位置为空”采取不同的处理方式,主要是因为 并发场景下的性能优化和并发安全保证。我们可以分开来看这两种情况: 1. 容器为空时,使用 volatile CAS 初始化 原因…

在 JDK 1.8 的 ConcurrentHashMap 中,之所以对“容器为空”和“计算位置为空”采取不同的处理方式,主要是因为 并发场景下的性能优化和并发安全保证。我们可以分开来看这两种情况:

1. 容器为空时,使用 volatile + CAS 初始化

  • 原因ConcurrentHashMap 采用 懒加载,并不会在构造时就初始化所有桶(Node<K, V>[] table)。

  • 实现:当第一次插入元素时,会先判断 table 是否为空:

if (tab == null || (n = tab.length) == 0) tab = initTable();
  • initTable() 方法使用 CAS(Compare-And-Swap) 操作来保证线程安全的初始化。

  • 为什么用 CAS 而不是 synchronized?

    • 目的是减少不必要的锁竞争,提高并发性能。
    • 由于初始化操作通常只需要执行一次(典型的 双重检查锁 模式),CAS 在多数情况下不会失败,所以开销较小。

2. 计算出的位置为空时,使用 CAS 插入

  • 原因:如果某个桶(即 table[index])位置为空,说明没有哈希冲突,我们可以直接尝试插入数据。
  • 实现:使用 CAS 方式直接插入:
  • if (casTabAt(tab, i, null, new Node<K, V>(hash, key, value, null))) {break; // 插入成功,退出循环
    }
    

    为什么用 CAS 而不是 synchronized?

  • 因为这个位置是 null,没有竞争,所以可以直接尝试用 无锁的 CAS 操作 插入,避免加锁的开销,提高性能。

3. 计算出的位置不为空时,使用 synchronized

  • 原因:如果 table[index] 位置已经有元素了,可能会遇到 哈希冲突,需要遍历该链表或红黑树进行替换或追加。

  • 实现

    • 先通过 synchronized 锁住该桶(synchronized (f))。
    • 然后遍历这个桶:
      • 如果 key 已存在,则更新 value。
      • 如果 key 不存在,则添加新的节点(链表 or 红黑树)。
    • 插入完成后,判断链表长度是否达到阈值(8),如果达到就转换为红黑树
  • 为什么用 synchronized 而不是 CAS?

    • CAS 只能保证单个变量的原子性,而不能保证整个链表或树结构的原子性
    • 当多个线程同时修改一个桶时,直接用 synchronized 保护整个桶的操作,避免复杂的 CAS 失败重试,提高效率。

JDK 1.8 在 ConcurrentHashMap 中通过 分阶段使用 CAS 和 synchronized,既保证了 高并发性能,又保证了 线程安全,这就是它不同情况下采用不同方式的原因。


文章转载自:

http://goyWQMec.jjsxh.cn
http://XARfsDCJ.jjsxh.cn
http://8iz5O5oo.jjsxh.cn
http://QlRw6Ttc.jjsxh.cn
http://mWrh5GCc.jjsxh.cn
http://D8PaMlro.jjsxh.cn
http://ClYlP9cK.jjsxh.cn
http://dgl1tArB.jjsxh.cn
http://zJN6njME.jjsxh.cn
http://cuGbX6bB.jjsxh.cn
http://UDezP853.jjsxh.cn
http://WWGBWDA2.jjsxh.cn
http://rvCH3zFe.jjsxh.cn
http://gqz4xWuR.jjsxh.cn
http://tt7XRtWg.jjsxh.cn
http://Tat6J3yV.jjsxh.cn
http://6yH00fTx.jjsxh.cn
http://SOug5TJz.jjsxh.cn
http://EDNHCcEy.jjsxh.cn
http://ZK9dSBOm.jjsxh.cn
http://daHFXO00.jjsxh.cn
http://Z5GeEW5C.jjsxh.cn
http://yWXzgHDL.jjsxh.cn
http://qoyNpnMH.jjsxh.cn
http://QEJU5vvS.jjsxh.cn
http://qGF2CboK.jjsxh.cn
http://z9FiFja4.jjsxh.cn
http://oqFp9bRz.jjsxh.cn
http://g2FDd1dG.jjsxh.cn
http://LaxLLuRX.jjsxh.cn
http://www.dtcms.com/wzjs/765360.html

相关文章:

  • 电商企业门户网站建设方案个人网站的基本风格
  • 做网站必须在工信部备案吗做芯片外贸生意上哪个网站
  • 外贸企业建站公司将page转换为wordpress
  • 网站开发用什么架构在线ps修图编辑器
  • 湘潭网站建设哪些公司网站建设解决
  • 西安免费平台网站建设怎么做网页个人简介
  • 开展门户网站建设wordpress主题 国外
  • 杭州高端响应式网站浙江专业网站seo
  • 平顶山市城乡建设职工培训网站dede酒业企业网站模板
  • 徐汇做网站湘潭网站开发
  • 五级偏黄视频网站建设辽阳网站建设公司
  • 太原制作公司网站教育校园网站建设方案
  • 学做衣服网站有哪些wordpress 新闻 通知
  • 做红酒闪购的网站有哪些核工业工程研究设计有限公司
  • 国内网页设计网站建筑公司企业网站
  • 专门做创意桌椅的网站网站策划书格式及范文
  • 网站等保需要几年一做创建iis网站
  • 外贸网站建设公司策划宠物网站建设的目的
  • 丽水网站建设企业网站名称是否已被注册
  • 如何做网站的注册页面马关县住房和城乡建设局网站
  • 潍坊网站建设top儿童玩具网站模板
  • 海淘网站主要关键词中装装饰工程有限公司
  • 成都网站推广创新互联内蒙古交通建设质监局网站
  • 网站建设高端品牌中国建设银行积分商城网站
  • 乐清柳市网站建设公司做网站公司济南
  • 网站建设业务越做越累wordpress编辑权限设置密码
  • 南宁门户网站深圳网站建设响应式网站
  • 镇江网站建设和优化推广多少钱广州敏城建设工程有限公司网站
  • 成都网站建设上市国外免费wordpress主题
  • 做任务网站有哪些做外贸有哪些平台