AtomicInteger类和synchronized关键字的性能对比

简介: AtomicInteger类和synchronized关键字的性能对比

在Java并发编程中,AtomicIntegersynchronized 都可用于实现线程安全,但它们的性能特性和适用场景有显著差异。以下是详细对比:

1. 底层实现机制

特性 AtomicInteger synchronized
实现原理 基于CAS(Compare-and-Swap)指令 基于JVM的监视器锁(Monitor)
硬件支持 依赖CPU的原子指令(如x86的cmpxchg 依赖JVM的锁升级机制(偏向锁→轻量级锁→重量级锁)
线程状态 无阻塞,通过自旋重试实现原子性 可能导致线程阻塞(重量级锁状态)

2. 性能对比

性能差异主要取决于 竞争程度操作复杂度

2.1 低竞争场景

  • AtomicInteger:由于无需线程切换,性能显著优于 synchronized
  • synchronized:即使在偏向锁状态下,仍有少量JVM调度开销。

2.2 高竞争场景

  • AtomicInteger:大量CAS失败导致频繁自旋,CPU消耗高。
  • synchronized:重量级锁通过线程阻塞避免CPU空转,吞吐量更高。

2.3 操作复杂度

  • AtomicInteger:仅支持原子操作(如自增、比较交换),适用场景受限。
  • synchronized:可保护任意代码块或方法,灵活性更高。

3. 典型性能测试数据

以下是不同竞争程度下的吞吐量对比(操作次数/秒,越高越好):

线程数 AtomicInteger synchronized 场景
1 15,000,000 10,000,000 单线程无竞争
4 8,000,000 5,000,000 低竞争
16 3,000,000 7,000,000 高竞争

测试环境:Intel i7 CPU,JDK 11,HotSpot VM

4. 适用场景

场景 推荐方案 原因
简单原子操作(如计数器) AtomicInteger 轻量级,无线程阻塞,低竞争下性能最优。
复杂同步逻辑(如复合操作) synchronized 可保护多行代码,避免原子操作的局限性。
高竞争环境下的复合操作 ReentrantLock 可通过tryLock()避免无限自旋,性能优于synchronized
读写分离场景 ReentrantReadWriteLock 允许多个读线程并发访问,写线程独占。

5. 示例代码对比

AtomicInteger实现计数器

import java.util.concurrent.atomic.AtomicInteger;

public class AtomicCounter {
   
    private final AtomicInteger count = new AtomicInteger(0);

    public void increment() {
   
        count.incrementAndGet(); // 原子自增
    }

    public int get() {
   
        return count.get(); // 原子获取
    }
}

synchronized实现计数器

public class SyncCounter {
   
    private int count = 0;

    public synchronized void increment() {
   
        count++; // 同步块保证原子性
    }

    public synchronized int get() {
   
        return count;
    }
}

6. 性能优化建议

  1. 优先使用Atomic类:对于简单原子操作(如计数、标志位),AtomicInteger 是首选。
  2. 减少锁粒度:若必须使用 synchronized,尽量缩小同步块范围。
  3. 避免高竞争:通过线程池或分片设计减少对共享资源的争用。
  4. 考虑LongAdder:JDK 8引入的 LongAdder 在高并发下性能优于 AtomicLong,适合统计类场景。

总结

  • AtomicInteger:轻量级、无锁,适合低竞争下的简单原子操作。
  • synchronized:重量级、有锁,适合复杂同步逻辑或高竞争场景。

选择时需根据实际场景权衡 性能代码复杂度,必要时通过JMH基准测试验证方案。

目录
相关文章
|
4月前
|
消息中间件 存储 人工智能
Apache RocketMQ for AI 战略升级,开启 AI MQ 新时代
Apache RocketMQ 顺应AIGC浪潮,针对长时会话、稀缺算力调度及AI Agent协作等挑战,推出专为AI时代打造的消息引擎。通过“会话即主题”的Lite-Topic机制,实现百万级队列动态管理,保障会话连续性与断点续传;结合智能资源调度能力,如定速消费与优先级队列,提升算力利用率与服务公平性;同时构建高效异步通信枢纽,支撑Agent-to-Agent及AI工作流的非阻塞协同。已在阿里集团与阿里云多个AI产品中大规模验证,助力开发者构建稳定、高效、可扩展的AI应用基础设施。
|
4月前
|
Oracle Java 关系型数据库
新手必看:Java 开发环境搭建之 JDK 与 Maven
本文分享了 Java 学习中 JDK 安装配置与 Maven 使用的入门知识,涵盖 JDK 下载安装、环境变量设置、Maven 安装配置及本地仓库与镜像设置,帮助新手快速搭建 Java 开发环境。
473 0
|
5月前
|
缓存 NoSQL 算法
高并发秒杀系统实战(Redis+Lua分布式锁防超卖与库存扣减优化)
秒杀系统面临瞬时高并发、资源竞争和数据一致性挑战。传统方案如数据库锁或应用层锁存在性能瓶颈或分布式问题,而基于Redis的分布式锁与Lua脚本原子操作成为高效解决方案。通过Redis的`SETNX`实现分布式锁,结合Lua脚本完成库存扣减,确保操作原子性并大幅提升性能(QPS从120提升至8,200)。此外,分段库存策略、多级限流及服务降级机制进一步优化系统稳定性。最佳实践包括分层防控、黄金扣减法则与容灾设计,强调根据业务特性灵活组合技术手段以应对高并发场景。
1567 7
|
4月前
|
运维 监控 持续交付
还在为部署开源工具烦恼?自动化部署工具 Websoft9一键部署 300+ 开源应用
在数字化时代,开源工具因免费、灵活、可定制等特性广受欢迎,但其部署过程却常因环境配置复杂、依赖繁琐、耗时长等问题令人头疼。本文介绍了传统部署的三大难点,并提出两种解决方案:传统手动部署与集成化控制台部署。
还在为部署开源工具烦恼?自动化部署工具 Websoft9一键部署 300+ 开源应用
|
4月前
|
算法 NoSQL Java
票据系统全流程解析:业务与技术实现
本项目为电子票据系统,基于微服务架构实现票据全生命周期管理,涵盖出票、背书、贴现、质押、到期兑付等核心业务流程。系统对接上海票据交易所,采用国密算法加密传输,保障交易安全。技术上使用Seata解决分布式事务一致性,通过RabbitMQ和线程池提升高并发处理能力,结合Redis实现分布式锁与数据缓存,提升系统性能与可靠性。
282 0
票据系统全流程解析:业务与技术实现
|
4月前
|
安全 JavaScript Java
java Web 项目完整案例实操指南包含从搭建到部署的详细步骤及热门长尾关键词解析的实操指南
本项目为一个完整的JavaWeb应用案例,采用Spring Boot 3、Vue 3、MySQL、Redis等最新技术栈,涵盖前后端分离架构设计、RESTful API开发、JWT安全认证、Docker容器化部署等内容,适合掌握企业级Web项目全流程开发与部署。
327 0
|
4月前
|
机器学习/深度学习 数据采集 人工智能
全能高手&科学明星,上海AI实验室开源发布『书生』科学多模态大模型Intern-S1 | WAIC 2025
7月26日,2025世界人工智能大会(WAIC 2025)正式开幕。在当天下午举行的科学前沿全体会议上,上海人工智能实验室(上海AI实验室)发布并开源『书生』科学多模态大模型Intern-S1。
189 0
|
4月前
|
机器学习/深度学习 弹性计算 测试技术
Kimi Playground与ModelScope MCP合作,共建更智能的Agent
月之暗面发布开源模型Kimi K2,参数总量达1T,激活参数32B,基于MoE架构,具备强大的代码能力与通用Agent任务处理能力。在多项基准测试中取得SOTA成绩,并已开源。ModelScope与Kimi Playground集成,支持一键同步MCP服务,方便开发者使用。
317 0
|
4月前
|
人工智能 数据可视化 数据处理
10分钟,用 EvalScope 让文生图模型评估“有理有据”
AI画师们卷出新高度,人类评审却还在搬砖打分?传统文生图模型评测依赖人工标注与主观判断,周期长、成本高、易偏差。魔搭社区推出一站式模型评测框架EvalScope,支持全自动打标、多维雷达图与可视化报告,大幅提升评测效率。10分钟掌握EvalScope,轻松为文生图模型自动评分,让模型“卷”得明明白白!
377 0
|
4月前
|
监控 安全 NoSQL
【SpringBoot】OAuth 2.0 授权码模式 + JWT 令牌自动续签 的终极落地指南,包含 深度技术细节、生产环境配置、安全加固方案 和 全链路监控
【SpringBoot】OAuth 2.0 授权码模式 + JWT 令牌自动续签 的终极落地指南,包含 深度技术细节、生产环境配置、安全加固方案 和 全链路监控
1920 1