JUC的LOCK

简介:java.util.concurrent.locks.Lock 是一个类似于synchronized 块的线程同步机制。但是 Lock比 synchronized 块更加灵活。Lock是个接口,有个实现类是ReentrantLock。

与sychronized的区别:1.sLock则必须要用户去手动释放锁,如果没有主动释放锁,就有可能导致出现死锁现象。2.lock可以配置公平策略,实现线程按照先后顺序获取锁。3.提供了trylock方法4.lock()和unlock()可以在不同的方法中执行,更灵活。

Lock接口: lock()  unlock() tryLock()  newCondition() lockInterruptibly()

Condition接口: await() signal() signalAll()

 

参考:https://www.cnblogs.com/lei-jun/p/16476739.html

 

AQS:Lock中的内部类,一个状态位status,0表示为加锁,1表示加锁,获取当前资源的线程引用,队列

调用lock方法,会先cas尝试获取锁,没获取到则进入队列,然后挂起,当获取当前资源的线程执行完毕后,会唤醒头节点。

AQS:https://blog.csdn.net/qq_42046105/article/details/102384342

 

posted @ 2022-09-13 17:53  无极是一种信仰  阅读(19)  评论(0编辑  收藏  举报