当前位置: 首页 > 图灵资讯 > java面试题> synchronized 和ReentrantLock区别?

synchronized 和ReentrantLock区别?

来源:图灵教育
时间:2024-01-23 13:14:05
 

synchronized 和ReentrantLock区别?

synchronized 和 ReentrantLock 都可以用于多线程下的同步控制,但具有如下不同点:

  1. 线程阻塞机制不同:synchronized 在获取锁失败时会一直等待,而 ReentrantLock 支持可中断式获取锁。
  2. 对于公平锁的支持:synchronized 无法实现公平锁,而 ReentrantLock 可以通过构造函数传入 true 来实现公平锁。
  3. 性能方面不同:在低并发的情况下,synchronized 的性能比 ReentrantLock 好,因为它是 JVM 层面的锁,不需要进行用户态和内核态之间的切换。但在高并发的情况下,ReentrantLock 的性能优于 synchronized,因为它提供了更灵活的线程控制,可以有效地避免死锁。