美文网首页
2021-07-28 JUC 锁

2021-07-28 JUC 锁

作者: 炒面Z | 来源:发表于2021-07-28 11:23 被阅读0次

    1. 读写锁 ReentrantReadWriteLock 的用法

    • 读写锁对象生成之后,内部会存在两个锁,读锁和写锁
        public ReentrantReadWriteLock(boolean fair) {
            sync = fair ? new FairSync() : new NonfairSync();
            readerLock = new ReadLock(this);
            writerLock = new WriteLock(this);
        }
    
    • 读锁是共享锁,同时被多个线程都获取
    • 写锁是排他锁,同时只能被一个线程获取
    • 读锁与写锁互斥(一个线程不能同时拥有锁对象的读锁和写锁)
    • 写锁能够降级为读写,读锁无法升级为写锁

    2.reentrantLock的condition

    • 流程图


      image.png

      condition的的

    • await() 把aqs中的阻塞队列(CHL)的node节点转移到condition的单向队列中
    • signal 把condition的单向队列转移到aqs的阻塞队列中

    相关文章

      网友评论

          本文标题:2021-07-28 JUC 锁

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