社区
Java
帖子详情
sychronized为什么效率比ReentrantLock低?
sunshine1027
2017-07-09 10:24:28
首先申明:这里说的效率低,是只考虑重量级锁、多线程高并发的情况。
众所周知,sychronized本身是用监视器锁实现的,操作系统底层用的是互斥锁。实际上实现方式是先一次CAS,失败则进入队列。
ReentrantLock默认的非公平锁,实现上也是先一次CAS,失败再进AQS实现的队列。
既然2个的实现方式都差不多,那为什么sychronized比ReentrantLock的效率要低呢?
...全文
240
回复
打赏
收藏
sychronized为什么效率比ReentrantLock低?
首先申明:这里说的效率低,是只考虑重量级锁、多线程高并发的情况。 众所周知,sychronized本身是用监视器锁实现的,操作系统底层用的是互斥锁。实际上实现方式是先一次CAS,失败则进入队列。 ReentrantLock默认的非公平锁,实现上也是先一次CAS,失败再进AQS实现的队列。 既然2个的实现方式都差不多,那为什么sychronized比ReentrantLock的效率要低呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Java中的
Sychronized
和Re
entr
ant
Lock
的区别?
(5)
sychronized
锁的是对象,锁信息保存在对象头中,而Re
entr
ant
Lock
通过代码中的int类型的state标识来标志锁的状态。(2)
sychronized
会自动的加锁和释放锁,而Re
entr
ant
Lock
需要程序员手动加锁和释放锁。(3)
sychronized
底层是JVM层面的锁,而Re
entr
ant
Lock
是API层面的锁。(4)
sychronized
是公平锁,而Re
entr
ant
Lock
可以选择公平锁或非公平锁。(6)
sychronized
底层有一个锁升级的过程。
Java基础 ->
Sychronized
和Re
entr
ant
Lock
的区别
Sychronized
和Re
entr
ant
Lock
的区别 Re
entr
ant
Lock
是⼀个类 ,
sychronized
是⼀个关键字,作为关键字,我们是没有办法过多干预的,就拿来就用,不用想那么多
sychronized
会⾃动的加锁与释放锁,Re
entr
ant
Lock
需要程序员⼿动加锁与释放
Lock
锁会忘记释放啊什么什么鬼的 在JDK版本比较
低
的时候
Lock
锁的
效率
还会高一点 都是现在大家都用1.8了,
sychronized
也有偏向锁和轻量锁了,所以
sychronized
确实好用 sychroni
Synchronized和Re
entr
ant
Lock
的区别
1.Synchronized和Re
entr
ant
Lock
的区别 ①Re
entr
ant
Lock
显示地获得,释放锁,synchronized隐式获得释放锁 ②Re
entr
ant
Lock
可响应中断,可轮回,synchronized是不可以响应中断的 ③Re
entr
ant
Lock
是API级别的,synchronized是JVM级别的 ④Re
entr
ant
Lock
可以实现公平锁 ⑤Re
entr
ant
Lock
通过Condition可以绑定多个条件 ⑥底层实现不一样,synchronized是同步
Java多线程 - Java锁有了解吗?Synchronized和Re
entr
ant
Lock
区别?说说如何Re
entr
ant
Lock
如何实现超时锁的等待?
当多个线程并发访问某个Java对象时,无论系统如何调度这些线程,也无论这些线程将如何交替操作,这个对象都能表现出一致的、正确的行为,那么对这个对象的操作是线程安全的。如果这个对象表现出不一致的、错误的行为,那么对这个对象的操作不是线程安全的,发生了线程的安全问题。临界区资源表示一种可以被多个线程使用的公共资源或共享数据,但是每一次只能有一个线程使用它。一旦临界区资源被占用,想使用该资源的其他线程则必须等待。在并发情况下,临界区资源是受保护的对象。...
线程同步的方法:
sychronized
、
lock
、re
entr
ant
Lock
等
线程同步的方法:
sychronized
、
lock
、re
entr
ant
Lock
等。 如果你向一个变量写值,而这个变量接下来可能会被另一个线程所读取,或者你从一个变量读值,而它的值可能是前面由另一个线程写入的,此时你就必须使用同步。
sychronized
Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码,它是在 软件层面依赖JVM实现同...
Java
50,527
社区成员
85,606
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章