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

[ java 锁 - 04 - Integer o = 1 作为 锁的问题]

关于 Integer 作为锁对象的风险总结

核心结论

Integer(如 Integer lock = 1;)不适合作为 synchronized 的锁对象,因缓存复用和不可变性导致同步逻辑失效。

关键风险点

  1. 缓存复用导致锁冲突
    Java 对 [-128, 127] 范围内的 Integer 实现缓存池复用,不同变量(如 lockA = 1lockB = 1)会指向同一对象。
    → 后果:无关线程竞争同一把锁,破坏同步隔离性,降低并发效率。

  2. 不可变性引发锁替换
    Integer 是不可变类,若对锁对象重新赋值(如 lock = 2),会导致锁引用指向新对象。
    → 后果:同步块实际锁定的对象变化,多个线程可同时进入临界区,破坏线程安全。

final 修饰的局限性

  • finalfinal Integer lock = 1)可避免锁被替换,但无法解决缓存复用问题(仍可能与其他 Integer(1) 锁冲突)。

正确替代方案

使用 final Object 作为锁对象:

private final Object lock = new Object(); // 最优解
  • 唯一性new Object() 每次创建独立实例,无缓存复用,确保锁隔离。
  • 稳定性final 修饰保证引用不可修改,避免锁替换。

总结

Integer 因缓存机制和不可变性,存在锁冲突和替换风险,不适合作为锁对象。优先使用 final Object,从根源上避免同步问题。

http://www.rkmt.cn/news/30912.html

相关文章:

  • 2025年自动提升机厂家权威推荐榜单:专业制造与高效解决方案深度解析
  • golang: gin项目常用第三方库
  • 2025年提升机厂家权威推荐榜:自动提升机、垂直提升机、斗式提升机、物料提升设备源头厂家精选
  • 2025年自动上料机厂家推荐排行榜:螺旋上料机,真空上料机,粉末上料机,颗粒上料机专业制造商精选指南
  • 20232315 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 2067C cf1500
  • 兼职日志-mysqlpython出图
  • 2025自动上料机厂家推荐东莞市垚林机械,高效输送精准控料!
  • Marchenko imaging-Kees Wapenaar-2014
  • ai-ti
  • 2025 年 10 月系统门窗厂商榜单揭晓,专业系统智造与品牌保障口碑优选
  • 学弟模拟赛题解报告 - idle
  • 鱼书学习笔记
  • 2025年店铺装修设计施工一体化推荐榜单:服装店/化妆品店/火锅店/商场店/餐厅/健身房/美容美发/珠宝店等专业装修公司精选
  • 20232423 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 2025年空调维保/末端保养/空调清洗/水处理厂家推荐排行榜:专业维护与高效服务口碑之选
  • XML-RPC接口安全漏洞分析与防护
  • 102302135_陈霖_作业1
  • 2025年中央空调主机保养/维修/清洗/维保/维护公司推荐排行榜,水处理维保,物业公司/医院/写字楼/商场中央空调主机维保公司精选
  • 参考文献
  • 2025 年 10 月门窗十大品牌榜单揭晓,聚焦专业制造与品牌口碑的品质之选
  • 大样例通过后无法AC的可能
  • 实现一个简易版本的IOC
  • Alibaba Cloud Linux 4 安装docker后,修复docker的方法
  • 2025年TPU厂家权威推荐榜:专业TPU加纤、TPU改性生产技术实力与市场口碑深度解析
  • hadoop应用遇到的问题
  • 企业级Nginx安装部署
  • 2025 年 10 月门窗十大品牌综合实力权威推荐榜单,精准检测与稳定性能兼具的行业优选解析
  • 2025 年 10 月门窗十大品牌综合实力权威推荐榜单,聚焦高端定制需求与全案交付能力
  • 力扣 第473场周赛(A~D)