syncronized 出现异常或代码块执行结束,自动释放锁。Java关键字,由JVM实现。未获取到锁,则一直阻塞。非公平锁。 ReentrantLock 出现异常或代码执行结束,需在finally中手动释放锁。Java程序实现的同步,实现了Lock接口。可重入、可中断、可设置最长等待锁的时间、可判断是否占有锁、可配置成公平锁、可跨代码块加锁解锁,更灵活。基于AQS、CAS实现。是一种乐观锁。可以和Condition组合使用,实现不同的调度算法。