美文网首页
lock的基本使用和原理

lock的基本使用和原理

作者: 写代码的杰西 | 来源:发表于2019-11-07 22:16 被阅读0次

    J.U.C
    java.util.concurrent 并发工具包

    ReenterantLock (重入互斥锁)

    可重入锁:锁中再获取锁。解决死锁问题
    比如

    synchorized demo(){
      demo1()
    }
    demo1{
      synchorized{
    }
    }
    

    两个方法同属一个类。在对象调用demo方法时,获取了对象锁。在调用demo1时,仍然可以获取锁(增加重入次数),不用等待当前线程释放demo的锁(否则就死锁了)
    lock.lock()
    synchronized和reenterantlock 都是支持重入的。

    当多个线程竞争锁的时候,其他线程怎么办?

    aqs 同步队列 同步工具
    aqs分为两种功能:
    1、独占-》互斥
    2、共享-》读写锁


    image.png

    AQS的基本实现

    aqs有个state 表示同步状态 0是无锁状态 大于0是有锁
    有个head和tail

    相关文章

      网友评论

          本文标题:lock的基本使用和原理

          本文链接:https://www.haomeiwen.com/subject/llspgftx.html