【多线程】Lock和ReentrantLock使用和源码分析

【多线程】Lock和ReentrantLock使用和源码分析多线程 Lock 和 ReentrantLoc 使用详情 一 Lock 和 ReentrantLoc 介绍和使用 1 Lock 和 ReentrantLoc 介绍 2 Lock 锁实现同步效果 3 Lock 的 trylock 方法 4

大家好,我是讯享网,很高兴认识大家。


讯享网

多线程---Lock和ReentrantLock使用详情

  • (一)Lock和ReentrantLock介绍和使用
    • (1)Lock和ReentrantLock介绍
    • (2)Lock锁实现同步效果
    • (3)Lock的trylock方法
    • (4)使用Lock时候的线程交互
    • (5)总结Lock(ReentrantLock)和synchronized的区别
  • (二)LockSuport工具类
    • (1)LockSuport介绍
    • (2)LockSuport特征
    • (3)认识parker对象
    • (4)void park()方法【消费线程的许可证,挂起线程】
    • (5)void unpark(Thread thread)方法【给线程发放许可证,唤醒线程】
    • (6)void parkNanos(long nanos)方法
    • (7)【推荐】park(Object blocker)方法
    • (8)void parkNanos(Object blocker, long nanos)方法
    • (9)void parkUntil(Object bocker, long deadline)方法
    • (10)方法测试案例
  • (三)抽象同步队列AQS概述
    • (1)AQS介绍
    • (2)AQS结构设计
    • (3)Node的内部元素
    • (4)state状态信息:
    • (5)操作state独占方式:
    • (6)操作state共享方式:
  • (四)ReentrantLock源码分析
    • 【1】源码中的类和方法介绍
      • (1)类的继承关系
      • (2)类的内部类
        • (1)内部类Sync、NonfairSync、FairSync介绍
        • (2)Sync 类:锁父类
        • (3)NonfairSync:采用非公平策略获取锁
        • (4)FairSync:采用公平策略获取锁
      • (3)类的属性
      • (4)类的构造函数【默认非公平锁】
      • (5)核心函数分析总结【补上过程的详细描述】
      • (6)CAS
      • (7)AQS阻塞队列
      • (48)AQS的公平锁与非公平锁
        • (1)公平锁
        • (2)非公平锁
        • (3)state字段
        • (4)AQS的应用场景
    • 【2】通过demo引出ReentrantLock的实现
      • (1)准备好demo方法的代码
      • (2)考虑给drawMoney方法加一个ReentrantLock锁
      • (3)猜测一下ReentrantLock的lock方法是怎如何阻塞线程?以及为什么?
    • 【3】lock方法:线程获取ReentrantLock锁以及加入等待队列
      • (1)acquire方法【公平&非公平有区别】
      • (2)tryAcquire:尝试加锁或者重入锁【公平&非公平有区别】
      • (3)addWaiter:把当时所有线程加入AQS等待队列
      • (4)acquireQueued:把当前获取锁失败的线程用park方法置为阻塞状态
      • (5)获取锁过程总结
    • 【4】unlock方法:释放锁过程
      • (1)release方法
      • (2)tryRelease方法:当前线程修改state=0释放锁
      • (3)unparkSuccessor方法:unpark唤醒AQS中的下一个线程
      • (4)解锁过程总结
    • 【5】补充知识
      • (1)CANCELLED状态节点生成
      • (2)中断恢复后的执行流程【中断线程】
    • 【6】小结
    • 【7】自定义同步工具
    • (5)lock()与unlock()实现原理【待处理】
  • (五)什么情况下使用ReenTrantLock
    • (1)ReenTrantLock使用场景
    • (2)案例一:使用Lock把MyStack改造为线程安全的类并且实现生产者消费者问题
    • (3)案例二:借助tryLock 解决死锁问题
  • (六)读写锁ReentrantReadWriteLock的原理
    • (1)什么情况下使用ReentrantReadWriteLock
    • (2)ReentrantReadWriteLock的一些方法
    • (3)ReentrantReadWriteLock的优缺点
    • (4)ReentrantReadWriteLock使用详解
  • (七)JDK8中新增的StampedLock锁的原理
小讯
上一篇 2025-03-31 10:07
下一篇 2025-02-25 08:30

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/33113.html