解释悲观锁与乐观锁

简介: 悲观锁如synchronized和Lock,通过阻塞确保线程安全;乐观锁如AtomicInteger,采用重试机制应对竞争。前者适合高竞争场景,后者适用于低竞争环境。二者思想类似,广泛应用于Java及数据库领域。

悲观锁

  • 像 synchronized,Lock 这些都属于悲观锁
  • 如果发生了竞争,失败的线程会进入阻塞
  • 【理解】悲观的名字由来:害怕其他线程来同时修改共享资源,因此用互斥锁让同一时刻只能有一个线程来占用共享资源

乐观锁

  • 像 AtomicInteger,AtomicReference 等原子类,这些都属于乐观锁
  • 如果发生了竞争,失败的线程不会阻塞,仍然会重试
  • 【理解】乐观的名字由来:不怕其他线程来同时修改共享资源,事实上它根本不加锁,所有线程都可以去修改共享资源,只不过并发时只有一个线程能成功,其它线程发现自己失败了,就去重试,直至成功

适用场景

  • 如果竞争少,能很快占有共享资源,适合使用乐观锁
  • 如果竞争多,线程对共享资源的独占时间长,适合使用悲观锁

P.S.

  • 这里讨论 Java 中的悲观锁和乐观锁,其它领域如数据库也有这俩概念,当然思想是类似的


相关文章
|
网络安全 数据安全/隐私保护 Windows
分享5款小众且无广告的小工具
推荐5款小众无广告软件:Krita(绘图)、WinSCP(文件传输)、燃精灵(微信检测)、GIDOT TYPESETTER(排版)、Sketchable(手绘笔记),功能强大且专注,提升创作与工作效率。
594 0
|
存储 人工智能 自然语言处理
RAL-Writer Agent:基于检索与复述机制,让长文创作不再丢失关键信息
RAL-Writer Agent是一种专业的人工智能写作辅助技术,旨在解决生成高质量、内容丰富的长篇文章时所面临的技术挑战,确保全文保持连贯性和相关性。本研究将系统分析RAL-Writer的核心技术架构、功能特点及其在内容创作、学术研究和专业交流领域的应用前景。
485 4
RAL-Writer Agent:基于检索与复述机制,让长文创作不再丢失关键信息
|
人工智能 监控 安全
AI创业公司如何突破算力瓶颈,实现高效发展?
AI创业公司如何在算力竞争中突围?本文揭示真正决定生死的关键在于“用好”算力,而非单纯依赖算力规模。通过混合云调度、GPU虚拟化、边缘推理、跨云高速通道等技术手段,提升算力利用率,降低成本,同时保障数据合规与高效传输。结合垂直场景的深刻理解与技术调度能力,创业公司也能构建坚实护城河,实现快速发展。
|
网络协议 安全 数据库
如何在阿里云国际上设置邮箱主机
如何在阿里云国际上设置邮箱主机
|
机器学习/深度学习 数据可视化 前端开发
|
搜索推荐 算法 UED
基于Python的推荐系统算法实现与评估
本文介绍了推荐系统的基本概念和主流算法,包括基于内容的推荐、协同过滤以及混合推荐。通过Python代码示例展示了如何实现基于内容的推荐和简化版用户-用户协同过滤,并讨论了推荐系统性能评估指标,如预测精度和覆盖率。文章强调推荐系统设计的迭代优化过程,指出实际应用中需考虑数据稀疏性、冷启动等问题。【6月更文挑战第11天】
2826 3
|
机器学习/深度学习 存储 人工智能
生成式 AI 与 LangCHain(一)(1)
生成式 AI 与 LangCHain(一)
980 1
|
Unix Perl
`sed` 命令完整指南教程
【8月更文挑战第20天】
1646 0
|
图形学 Python
Python绘制动态树形:实现分形树动画
Python绘制动态树形:实现分形树动画
573 0