synchronized和ReentantLock对比:
synchronized是java关键字,其享受JVM带来的锁优化机制:偏向锁、轻量级锁、重量级锁等;ReentantLock则是一个类,实现依赖AQS;
synchronized一般会自动解锁,而ReentrantLock需要手动调用unlock;
synchronized和ReentantLock都支持可重入特性;
ReentantLock支持公平性,synchronized则不支持;
ReentantLock支持tryLock获取锁尝试;
ReentantLock支持可打断的加锁操作;
ReentantLock支持条件变量,可用来替代Oject.wait和notify方法;
ReentrantLock支持查看等待的线程等;