chapter13_显式锁_3_公平性

  • (1) 在ReentrantLock的构造函数中可以指定创建公平性的锁还是非公平性的锁

      /**
       * Creates an instance of {@code ReentrantLock} with the
       * given fairness policy.
       *
       * @param fair {@code true} if this lock should use a fair ordering policy
       */
      public ReentrantLock(boolean fair) {
          sync = fair ? new FairSync() : new NonfairSync();
      }
    

    (2)

    公平锁, 线程将按照它们请求锁的顺序获得锁;

    非公平锁, 如果一个线程请求它, 并且在发出请求的同时恰好锁的状态变为可用, 则这个线程__“插队”__获得这个锁

    (3) 非公平锁的性能一般好于公平锁

    其中一个原因是__恢复一个线程到这个线程真正开始运行中间存在时间差__, 非公平锁可以利用这段时间就把锁获得到

猜你喜欢

转载自blog.csdn.net/captxb/article/details/88648703