摘要
Lock在硬件层面依赖CPU指令,完全由Java代码完成,底层利用LockSupport类和Unsafe类进行操作;
虽然锁有很多实现,但是都依赖AbstractQueuedSynchronizer类,我们用ReentrantLock进行讲解;
ReentrantLock调用过程
ReentrantLock类的API调用都委托给一个内部类 Sync ,而该类继承了 AbstractQueuedSynchronizer类;
public class ReentrantLock implements Lock, java.io.Serializable {
...... abstract static class Sync extends AbstractQueuedSynchronizer {
......而Sync又分为两个子类:公平锁和非公平锁,默认为非公平锁
/** * Sync object for non-fair locks
延伸阅读
学习是年轻人改变自己的最好方式