当需要一些高级功能时才应使用ReentrantLock,这些功能包括:可定时的、可轮询的与可中断的锁获取操作,公平队列,以及非块结构的锁。另外ReentrantLock可以有多个Condition对象。
其他情况应该优先使用synchronized
synchronized的优点:
1. 不用手动释放锁,更安全
2. 线程转储中能给出栈帧信息,能够检测和识别放生死锁的线程
3. synchronized是JVM的内置属性,能够执行一些优化,例如锁消除优化
原文:http://www.cnblogs.com/drizzlewithwind/p/6409883.html