平时用 synchronized 或 ReentrantLock 最多想到上锁,需要考虑超时和可重入。

    分布式锁就需要考虑更多问题了

    1. 分布式环境,锁只能被同一机器的一个线程获取。
    2. 获取和释放,要高性能,高可用。
    3. 具备可重入特性。
    4. 锁失效,防止死锁。
    5. tryAcquire ,非阻塞获取锁。
    6. 因为延迟,避免删除别的线程加的锁。