1. ReentrantLock lock = new ReentrantLock(); // 创建锁
    2. lock.lock(); // 加锁
    3. System.out.println("ReentrantLock");
    4. lock.unlock(); // 释放锁
    1. public void lock() {
    2. sync.lock(); // 默认调用非公平锁加锁
    3. }
    1. final void lock() {
    2. // 如果当前锁没有被持有,则原子性地更新获取锁的状态为1
    3. if (compareAndSetState(0, 1))
    4. setExclusiveOwnerThread(Thread.currentThread());
    5. else
    6. // 如果当前锁被持有 todo
    7. acquire(1);
    8. }
    1. protected final boolean compareAndSetState(int expect, int update) {
    2. // 调用unSafe方法更新,将锁被获取的状态更新为1
    3. return unsafe.compareAndSwapInt(this, stateOffset, expect, update);
    4. }