Java/synchronized 和 ReentrantLock
在 Java5 之前,只有synchronized一种锁,在 Java5 之后,增加了ReentrantLock。ReentrantLock位于 java.util.concurrent.locks 包,和 CountDownLatch、FutureTask、Semaphore 一样基于 AQS 实现,能够实现比synchronized更细粒度的控制,如控制公平性(fairness)。使用ReentrantLock需要注意的是在调用 lock() 方法之后,必须调用 unlock() 释放锁。在 Java6 后经过优化的synchronized性能未必比ReentrantLock低,并且synchronized也是可重入的。













