下面要给大家介绍的是synchronized和reentrantlock的区别,这两者之间究竟存在着哪些区别呢?下面一起来了解一下吧。
一、synchronized和reentrantlock区别
我们从功能和性能方面来讲一下两者之间的区别
功能方面:
synchronized和reentrantlock两者最大的区别就是,Synchronized是java语言的关键字,是原生语法层面的互斥,需要jvm实现。
ReentrantLock是JDK 1.5之后提供的API层面的互斥锁,需要lock()以及unlock()方法配合try/finally语句块来完成。
Synchronized的使用方法是非常的简单方便的,由编译器去保证锁的加锁和释放。
而ReenTrantLock就比较的复杂一些,要通过手工声明来加锁和释放锁。
ReenTrantLock的锁的细粒度和灵活度要比Synchronized好。
性能方面:
Synchronized优化之前,synchronized的性能差于ReenTrantLock。
可是在Synchronized引入了偏向锁,轻量级锁之后,synchronized和ReenTrantLock的性能就相差不一了。
官方方面甚至建议使用synchronized。
以上就是从功能和性能方面来看两者的区别了,你都了解了吧。
更多的java相关问题回答,可以继续关注奇Q工具网的常见问答专栏了解哦。