ReentrantLock实现原理

来源:互联网 发布:脑洞网络用语 编辑:程序博客网 时间:2024/05/18 02:06

ReentrantLock实现原理

ReentrantLock弥补了sychronized的不足,实现了对象的可重入锁等功能

参考文献
https://my.oschina.net/andylucc/blog/651982

  • 什么是AQS?

AQS是JDK1.5提供的一个基于FIFO等待队列实现的一个用于实现同步器的基础框架,这个基础框架的重要性可以这么说,JCU包里面几乎所有的有关锁、多线程并发以及线程同步器等重要组件的实现都是基于AQS这个框架。AQS的核心思想是基于volatile int state这样的一个属性同时配合Unsafe工具对其原子性的操作来实现对当前锁的状态进行修改。当state的值为0的时候,标识改Lock不被任何线程所占有。

  • ReentrantLock锁的架构

ReentrantLoc的架构相对简单,主要包括一个Sync的内部抽象类以及Sync抽象类的两个实现类。上面已经说过了Sync继承自AQS;

  • ReentrantLock实现思路
    1.读取Sync的state属性,判断是否有对象持有锁
    2.如果有,判断是不是自己线程,是的话state+1
    3.不是的话,当前线程进入队列排队等候
原创粉丝点击