对比
Synchronlzed获取锁无法设置超时;ReentrantLock可以设置获取锁的超时时间。
Synchronlzed无法实现公平锁,ReentrantLock可以实现公平锁<br>
Synchronlzed是java中的关键字,无法提供外部方法,使用的都是Object类的方法;<br>ReentrantLock是JUC中锁的一种实现,提供的方法稍微多一些。
Synchrolzed在加锁代码执行完成或出现异常,自动释放锁;<br>ReentrantLock不会自动释放锁,需要在finally()代码中手动释放。<br>
锁的实现
公平锁 FairSync 每个线程公平的获取锁,不会出现线程饥饿的情况。
非公平锁 NonFairSync 独占试获取锁,容易出现线程饥饿的情况。
Condition
多线程协调通讯类
Condition 维护了一个线程等待队列,也是多线程件协调通讯的工具类<br>使得某个线程一起等待某个条件,满足条件才能唤醒,唤醒后,还需要更新竞争锁