1. synchronized:系统自带,系统自动加锁、自动解锁;ReentrantLock:需要手动加锁,手动解锁
    2. ReentrantLock可以用Condition对不同的情况用不同的等待队列;synchronized做不到这一点
    3. 底层实现:ReentrantLock是CAS的实现;synchronized中有四种状态的锁以及锁状态的升级