锁<一>ReentrantLock

可重入的互斥锁特点

官方推荐使用方法:

 *  
 {@code
 * class X {
 *   private final ReentrantLock lock = new ReentrantLock();
 *   // ...
 *
 *   public void m() {
 *     lock.lock();  // block until condition holds
 *     try {
 *       // ... method body
 *     } finally {
 *       lock.unlock()
 *     }
 *   }
 * }}
//构造函数
 public ReentrantLock() {
        sync = new NonfairSync();
    }
  public ReentrantLock(boolean fair) {
        sync = fair ? new FairSync() : new NonfairSync();
    }
 public void lock() {
        sync.lock();
    }
   public void unlock() {
        sync.release(1);
    }

划重点:核心类AbstractQueuedSynchronizer

CountDownLatch、FutureTask、Semaphore、ReentrantLock等都有一个内部类是这个抽象类的子类
后面再分析该结构,并补充该文

你可能感兴趣的:(锁<一>ReentrantLock)