synchronized和Reentrantlock的区别

1、Synchronized是jvm层面的锁是由jvm实现的而ReentrantLock是Api层面的锁它需要lock()和unlock()方法来获得锁和释放锁。

2、ReentrantLock获取锁可等待中断、可作为公平锁和非公平锁而Synchronized只能阻塞的等待获取锁、只能为非公平锁。

3、ReentrantLock可以通过Condition方法绑定多个条件然后根据条件的不同分批唤醒,Synchronized只能唤醒随机一个线程或全部唤醒。

相关推荐