首页 > 图灵资讯 > java面试题>正文

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,因为它提供了更灵活的线程控制,可以有效地避免死锁。

 
上一篇 公平锁和非公平锁的区别
下一篇 ThreadLocal数据存储原理?

文章素材均来源于网络,如有侵权,请联系管理员删除。