社区
Java SE
帖子详情
synchronized和ReentrantLock的实现原理是什么?它们又什么区别?
Crazy Code Farmer
2020-10-14 05:09:59
多线程面试中高频考点,我们发表不同的见解,增强印象。
...全文
4418
2
打赏
收藏
synchronized和ReentrantLock的实现原理是什么?它们又什么区别?
多线程面试中高频考点,我们发表不同的见解,增强印象。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shuster
2020-10-16
打赏
举报
回复
synchronized是java自带的关键字,使用起来非常方便,ReentrantLock是jdk中提供的一个类。java开始支持synchronized时其效率相比ReentrantLock比较低,后面经过逐步优化,效率才和ReentrantLock相当。ReentrantLock的实现可以参考jdk的源码,继承了AbstractQueueSychronizer ,并且使用unsafe类的park和unpark休眠和唤醒线程,通过compareAndSwap方法实现并发机制,即获取锁实际上就是去改变内存中的某个变量的值,改变成功了代表获取了锁,如果该变量已经被其他线程修改了,当前线程只能等待其他线程修改回来,当前线程要么循环去判断要么休眠。java中对象有MarkWord,synchronized实现和其有关,synchronized有enter队列和wait队列,获取锁进入enter队列进行竞争,已经获取锁的通过wait方法释放锁后会进入wait队列,通过notify方法唤醒后会重新进入enter队列竞争锁。 ps:关于如何保证并发安全性的底层实现Linux 0.11中是通过禁用中断实现的,很简单粗暴。现在有原子指令来保证,通过锁内存来实现,软件上很难实现的东西硬件上很容易实现。以上内容经供参考,一些细节记不清了,需要去找资料研究!!!
做一个海贼
2020-10-15
打赏
举报
回复
都是可重入锁,synchronized使用完之后锁会自动释放,ReentrantLock需要手动释放,ReentrantLock更灵活点可以设置超时时间之类的。synchronized相对更简单使用方便。其他方面应该都差不多
第15讲
synchronized
和Re
entr
ant
Lock
有什么
区别
呢?1
在 Java 5 以前,
synchronized
是仅有的同步手段,在代码中,
synchronized
可以用来修饰方法,也可以使用在特定的代码块儿上,本质上
05-Java锁机制
synchronized
Re
entr
ant
Lock
与AQS全解析-147092910.md
整理总结不易,还望海涵
Re
entr
ant
Lock
与
synchronized
NULL 博文链接:https://uule.iteye.com/blog/1488356
Java实习生面试复习(七):
synchronized
和Re
entr
ant
Lock
的学习
我是一名很普通的双非大三学生。接下来的几个月内,我将坚持写博客,输出知识的同时巩固自己的基础,记录自己的成长和锻炼自己,备战2021暑期实习面试!奥利给!!
synchronized
和 Re
entr
ant
Lock
也是高频的面试问题,我们这篇文章就来深入学习一下。
synchronized
和 Re
entr
ant
Lock
是如何实现的?它们有什么
区别
?
synchronized
是独占式悲观锁,是通过JVM 层面实现的,
synchronized
只允许同一时刻只有一个线程操作资源。在Java中每个对象都隐式包含一个monitor (监视器)对象,加锁的过程其实就是竞争monitor的过程,当线
Java
synchronized
关键字和
Lock
接口
实现原理
主要介绍了Java
synchronized
关键字和
Lock
接口
实现原理
,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章