码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Java中常见锁的分类及概念分析


    基于线程对同一把锁的获取情况分类

    • 可重入锁

    同一个线程可以多次获取锁
    每次获取锁,锁的计数器加1,每次释放锁锁的计数器减1
    锁的计数器归零,锁完全释放
    Java中提供的synchronized,ReentrantLock,ReentrantReadWriteLock都是可重入锁。

    • 不可重入锁

    同一个线程不可以多次获取锁,必须等待锁释放才能再次获取

    基于对共享资源的访问策略

    • 乐观锁

    当线程获取不到资源,让cpu再次调用重新获取锁资源
    Atomic原子性类中,就是基于CAS乐观锁实现的。

    • 悲观锁

    当前线程获取不到锁资源,线程会被挂起进入(BLOCKED、WATING)状态,于此同时线程的挂起会涉及用户态与内核态的切换,消耗资源
    用户态:JVM自己执行指令,不需要CPU调度
    内核态:JVM不能自己执行,需要操作系统调度
    Java中提供的synchronized,ReentrantLock,ReentrantReadWriteLock都是悲观锁。

    根据线程获取锁的先后顺序

    • 公平锁

    线程获取锁的顺序和你来的顺序一致,先到先得。

    • 非公平锁

    线程获取锁的时候可以使用竞争的方式,竞争失败也排队获取
    Java中提供的synchronized只能是非公平锁。

    Java中提供的ReentrantLock,ReentrantReadWriteLock可以实现公平锁和非公平锁

    根据锁被线程资源占有的数量

    • 互斥锁

    同一时刻,只有一个线程可以拥有这把锁
    Java中提供的synchronized、ReentrantLock是互斥锁。
    一般上写的业务场景

    • 共享锁

    同一个时刻,一把锁可以被多个线程资源共享
    一般读的业务场景

    Java中提供的ReentrantReadWriteLock,有互斥锁也有共享锁。

    如果您觉得我所提供的信息对您有帮助,欢迎您点赞、收藏和评论。如果您想要更深入的交流,您可以添加我的微信号,或者关注我的微信公众号。您的支持和鼓励是我持续写作的动力,我期待与您互动并提供更多有价值的信息。

  • 相关阅读:
    android studio 按钮点击事件的实现方法(三种方法)
    二分查找算法介绍(边界值、循环条件、值的变化、二分查找的原理、异常处理)
    飞桨中国行落地广州 共探企业智能化升级新路径
    桌面自动化工具总结
    ssh登录太慢了,每次都要20s
    这份华为以太网接口配置命令太真香了!
    maven常用插件详解
    HAL库笔记(重要库函数)
    51单片机笔记:定时器/计数器
    学生HTML个人网页作业作品 (水果商城HTML+CSS)
  • 原文地址:https://blog.csdn.net/weixin_50503886/article/details/130909441
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号