讲师中心 微信公众号
AI工具推荐 视频效率加速

详解LongAdder性能优化_分段锁思想在高度并发计数中的应用

梦辰酱_7924

梦辰酱_7924

发布时间:2026-02-14 13:31:06

|

884人浏览过

|

来源于php中文网

原创

LongAdder比AtomicLong快的关键在于分散竞争:无冲突时操作base,冲突后自动分Cell避免CAS自旋,结合哈希定位、@Contended防伪共享及懒加载机制,在高并发统计场景显著提升性能。

详解longadder性能优化_分段锁思想在高度并发计数中的应用

为什么LongAdder比AtomicLong快?关键在“不抢一个坑”

因为AtomicLong.incrementAndGet()所有线程都挤在同一个变量上CAS,失败就自旋重试——100个线程争1个值,99个白耗CPU;而LongAdder默认先写base,冲突后自动分出多个Cell,让线程各自写自己命中的槽位,把热点打散了。

  • 无竞争时:所有操作走base,和AtomicLong性能一致
  • 出现CAS失败时:才懒加载cells数组(初始长度2),后续按需扩容为2的幂次
  • 线程定位槽位靠threadLocalRandomProbe哈希,不是简单取模,减少哈希碰撞
  • 每个Cell加了@Contended注解,避免伪共享——同一缓存行不塞多个Cell.value

sum()不是实时快照,别拿它做强一致性判断

sum()只是遍历当前所有cells并加上base,但某个线程刚写进本地Cell、还没触发合并逻辑(比如retryUpdate未执行),这部分增量就不会被计入。它适合统计类场景,不适合控制流分支。

  • 错误用法:if (counter.sum() >= 1000) { triggerAlert(); } → 可能漏报或延迟触发
  • 正确思路:需要瞬时精确值,退回AtomicLong;或用ReentrantLock + 普通long
  • counter.longValue()和sum()行为完全一样,别以为换方法就更“准”
  • 千万别用counter.toString()做数值比较——它内部调的就是sum(),纯属多套一层

初始化和使用姿势不对,反而拖慢性能

很多人一上来就new LongAdder()然后扔进高并发循环,却忽略了它的“懒加载”特性在低并发下反而多了一层判断开销;或者误以为要手动预热cells数组。

  • 低并发(比如单线程计数):直接用AtomicLong更轻量,LongAdder多出的字段和分支判断是负优化
  • 不要手动调cells相关方法——这个数组完全由LongAdder内部管理,外部不可见也不可控
  • 不需要“预分配”,LongAdder会在首次竞争时自动创建cells,且扩容策略已优化(最多到CPU核心数级别)
  • 如果业务要求读多写少,且能接受几毫秒误差,sum()可定期缓存(比如每秒一次),避免高频遍历

真实压测中要注意的三个细节

光看文档说“快很多”没用,实测时容易忽略JVM参数、线程模型和观测方式带来的干扰。

  • 必须开-XX:-RestrictContended(JDK8u20+默认开启,老版本需显式打开),否则@Contended无效,伪共享照旧
  • 线程数太少(如
  • 别只比increment()吞吐,还要看sum()延迟:高写入频次下cells数组可能动态扩容,遍历开销微增,但远低于AtomicLong自旋退化
真正卡住人的,从来不是“会不会用”,而是忘了sum()那句注释里写的:“the sum is not necessarily atomic”。它不保证你调用那一刻所有线程的修改都已落地——这个边界模糊了,监控图表上的毛刺和告警延迟就都有了解释。
数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

花生AI
花生AI Hot

一款AI视频创作工具,主要用于B站推出的AI视频创作工具,适合需要提升相关任务效率的用户。

讯飞智文

一款面向学习和办公场景的AI文档创作工具,可辅助生成PPT与Word文档,提高资料整理和内容制作效率。

相关专题

更多
线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

4658

2023.08.10

PHP 高并发与性能优化
PHP 高并发与性能优化

本专题聚焦 PHP 在高并发场景下的性能优化与系统调优,内容涵盖 Nginx 与 PHP-FPM 优化、Opcode 缓存、Redis/Memcached 应用、异步任务队列、数据库优化、代码性能分析与瓶颈排查。通过实战案例(如高并发接口优化、缓存系统设计、秒杀活动实现),帮助学习者掌握 构建高性能PHP后端系统的核心能力。

19613

2025.10.16

PHP 数据库操作与性能优化
PHP 数据库操作与性能优化

本专题聚焦于PHP在数据库开发中的核心应用,详细讲解PDO与MySQLi的使用方法、预处理语句、事务控制与安全防注入策略。同时深入分析SQL查询优化、索引设计、慢查询排查等性能提升手段。通过实战案例帮助开发者构建高效、安全、可扩展的PHP数据库应用系统。

453

2025.11.13

JavaScript 性能优化与前端调优
JavaScript 性能优化与前端调优

本专题系统讲解 JavaScript 性能优化的核心技术,涵盖页面加载优化、异步编程、内存管理、事件代理、代码分割、懒加载、浏览器缓存机制等。通过多个实际项目示例,帮助开发者掌握 如何通过前端调优提升网站性能,减少加载时间,提高用户体验与页面响应速度。

348

2025.12.30

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

343

2026.03.06

宝塔面板Nginx性能优化与高并发配置实践
宝塔面板Nginx性能优化与高并发配置实践

本专题围绕宝塔环境下的 Nginx 优化展开,深入讲解缓存策略、连接数调优、Gzip 压缩、静态资源加速及反向代理配置。帮助用户提升网站访问速度与并发处理能力。

1076

2026.03.25

宝塔面板数据库管理与MySQL性能优化实践
宝塔面板数据库管理与MySQL性能优化实践

本专题围绕宝塔面板中的数据库管理功能展开,系统讲解 MySQL 安装配置、数据库创建与权限管理、慢查询分析及性能优化方法。内容涵盖索引优化、连接数调优、缓存机制配置以及数据库备份策略。通过实操讲解,帮助开发者提升数据库运行效率与稳定性。

265

2026.04.07

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

20

2026.11.05

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

20

2026.11.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn