码农知识堂 - 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,有互斥锁也有共享锁。

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

  • 相关阅读:
    SpringCloud——服务注册——Eureka
    语音信号处理-基础(三):语音信号分析【连续的“模拟信号”--采样、量化、编码-->离散的“数字信号”】
    10. 查询没学过“张三”老师教授的任一门课程的学生姓名
    字符贡献度问题
    数据结构-----图(graph)的储存和创建
    海思平台SS528V100编译 linux kernel tun.c eth_get_headlen 编译 出错的问题
    alibaba国际版阿里巴巴API接入说明(阿里巴巴商品详情+关键词搜索商品列表)
    python批量重命名工具
    【AI】Deepstream入门(2)Ubuntu20.04安装Deepstream
    2022 Java 企业面试题汇总
  • 原文地址:https://blog.csdn.net/weixin_50503886/article/details/130909441
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号