共同点
①都用于多线程对共享对象的访问。
②都是可重入锁。
③都保证了可见性和互斥性。
不同点
①ReentrantLock显示获取和释放锁;synchronized隐式获取和释放锁。
②Reentrant可响应中断、可轮询,为处理锁提供了更强的灵活性。
③ReentrantLock是API级别的,synchronized是JVM级别的。
④ReentrantLock可以定义公平锁,可以通过Condition绑定多个条件。
⑤二者的底层实现不一样:synchronized是同步阻塞,采用的是悲观并发策略;ReentrantLock是同步非阻塞,采用的是乐观并发策略。
⑥ReentrantLock是一个接口;synchronized是java中的关键字,是由内置语言实现的。
⑦通过ReentrantLock可以知道是否成功获取锁(isLock方法);而synchronized则无从得知。
⑧ReentrantLock可以通过分别定义读写锁提高多个线程读操作的效率。
标签:synchronized,并发,ReentrantLock,阻塞,获取,sychronized,级别,对比 From: https://blog.csdn.net/ChristopherI/article/details/137081190