摘要

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 

网友评论