ReentrantLock通过方法lock(),unlock()来加锁解锁,加锁后需要手动解锁,一般在finally里解锁,而synchronized会被JVM自动解锁。ReentrantLock比synchronized多了的功能又可中断、公平锁、多个锁。公平锁需要在多核的情况下维护一个队列,因此比非公平锁的效率要低很多。