计数器AtomicInteger 和 同步计数器并发效率问题
LZ木有上传自己的测试代码 所以只能随便说说啦同步要求只能有一个线程进行处理 处理完后下个线程进行处理而AtomicInteger这类实现都是基于CAS做的 如果并发很高 冲突很高 每个线程的cas的失败频率会变高 自然比独占慢了被~
■网友
首先明白什么是busy-wait的同步原语,什么是thread-wait的同步原语。AtomicInteger使用的是自旋锁(spin-lock),自旋锁适用于非常短的持有锁的场景下,比如几十个毫秒。如果持有时间过长,那么锁就一直做自旋(相当于while(1)一直消耗CPU),在高并发的场景下可想而知,一大波自旋锁正在busy-waiting。使用睡眠锁的话(比如互斥量、Lock、Synchronized),虽然增加了线程由RUNNING到BLOCKED的上下文切换次数,但睡眠的线程并不占用CPU资源,所以这种情境下反而比AtomicInteger更高效。
推荐阅读
- 湖北:查办黑恶势力与深挖“保护伞”同步推进
- 医师|我市举办首届放射医师年会现场专题讲座同步直播
- 李小璐|李小璐携甜馨跳舞,母女俩动作同步一个甜美一个高冷,相处如闺蜜
- 能和 Google Calender 方便双向同步的 iOS 日程管理软件有哪些最好也支持iPad
- |全新领克01中欧同步预售,领克加速全球布局
- kafka同步咋解决乱序问题
- 百度云网盘的文件同步策略跟 Dropbox 有何区别
- 汽车知识|DS 9即将亮相欧洲市场 配置以及售价同步曝光
- 无锡启用首批青干讲习所 青干LOGO同步亮相
- 为啥安卓上的kindle 不能同步个人文档
