synchronized和reentrantlock区别有哪些?区别一览

KLQ 2020-04-27 16:26:25 java常见问答 7205

下面要给大家介绍的是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工具网的常见问答专栏了解哦。