社区
Java SE
帖子详情
synchronized和ReentrantLock的实现原理是什么?它们又什么区别?
Crazy Code Farmer
2020-10-14 05:09:59
多线程面试中高频考点,我们发表不同的见解,增强印象。
...全文
4389
2
打赏
收藏
synchronized和ReentrantLock的实现原理是什么?它们又什么区别?
多线程面试中高频考点,我们发表不同的见解,增强印象。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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相对更简单使用方便。其他方面应该都差不多
Java面试题.docx
面试题目: 1-10题: 1、java中==和equals和hashCode的
区别
2、int与integer的
区别
3、String、StringBuffer、StringBuilder
区别
4、什么是内部类?内部类的作用 5、进程和线程的
区别
6、final,finally,finalize的
区别
7、Serializable 和Parcelable 的
区别
8、静态属性和静态方法是否可以被继承?是否可以被重写?以及原因? 9、成员内部类、静态内部类、局部内部类和匿名内部类的理解,以及项目中的应用 10、string 转换成 integer的方式及原理 11-20题: 11、哪些情况下的对象会被垃圾回收机制处理掉? 12、静态代理和动态代理的
区别
,什么场景使用? 14、Java中实现多态的机制是什么? 16、说说你对Java反射的理解 17、说说你对Java注解的理解 18、Java中String的了解 19、String为什么要设计成不可变的? 20、Object类的equal和hashCode方法重写,为什么? 21-40题 21、List,Set,Map的
区别
26、ArrayMap和HashMap的对比 29、HashMap和HashTable的
区别
30、HashMap与HashSet的
区别
31-40题 31、HashSet与HashMap怎么判断集合元素重复? 33、ArrayList和LinkedList的
区别
,以及应用场景 34、数组和链表的
区别
35、开启线程的三种方式? 36、线程和进程的
区别
? 38、run()和start()方法
区别
39、如何控制某个方法允许并发访问线程的个数? 40、在Java中wait和seelp方法的不同 41-50题 41、谈谈wait/notify关键字的理解 42、什么导致线程阻塞?线程如何关闭? 43、如何保证线程安全? 44、如何实现线程同步? 45、线程间操作List 46、谈谈对
Synchronized
关键字,类锁,方法锁,重入锁的理解 49、
synchronized
和volatile 关键字的
区别
51-58题 51、Re
entr
ant
Lock
、
synchronized
和volatile比较 53、死锁的四个必要条件? 56、什么是线程池,如何使用? 56、什么是线程池,如何使用? 58、有三个线程T1,T2,T3,怎么确保它们按顺序执行?
lock
s框架:接口.pdf
这份资源旨在介绍 Java
Lock
s 框架中的
Lock
接口及其相关内容。
Lock
接口是
Lock
s 框架的核心,提供了更加灵活和可控的线程同步机制,用于替代传统的
synchronized
关键字。
Lock
接口概述: 简要介绍
Lock
接口,解释其在多线程编程中的作用和优势。比较
Lock
接口与传统
synchronized
关键字的不同之处。 常用
Lock
接口实现类: 详细讲解
Lock
接口的一些常用实现类,如 Re
entr
ant
Lock
、ReadWrite
Lock
、Stamped
Lock
等。解释它们的特点和适用场景。
Lock
接口的基本用法: 深入探讨如何使用
Lock
接口来保护共享资源。演示如何通过
lock
和 un
lock
方法来实现线程的同步和互斥。 可重入性和重入锁: 解释
Lock
接口的可重入性,讲解同一个线程多次获取锁的机制,避免死锁。介绍 Re
entr
ant
Lock
的
实现原理
。 Condition 条件变量: 介绍
Lock
接口中的 Condition,它可以实现更复杂的线程等待和通知机制。解释如何使用 await、signal 和 signalAll 方法。 通过这份资源,您将获得关于
Lock
s 框架中
Lock
接口的深入理解,从基本用法到高级功能,从可重入性到条件变量。
Java并发编程实战
课程介绍: 对于一个Java程序员而言,能否熟练掌握并发编程是判断他优秀与否的重要标准之一。因为并发编程是Java语言中最为晦涩的知识点,它涉及操作系统、内存、CPU、编程语言等多方面的基础能力,更为考验一个程序员的内功。那到底应该怎么学习并发编程呢?Java SDK的并发工具包有很多,是要死记硬背每一个工具的优缺点和使用场景吗?当然不是,想要学好并发编程,你需要从一个个单一的知识和技术中“跳出来”,高屋建瓴地看问题,并逐步建立自己的知识体系。本课程希望能够帮助你建立起一张处理并发问题的全景图,让你能够彻底理解并发问题的本质所在。同时,课程还会深入介绍Java并发编程技术背后的逻辑关系以及应用场景,助你能够游刃有余地游走在这些技术之中。课程核心知识点: 1. 线程安全性分析,主要内容包括原子性、可见性、有序性等分析。以及Atomic包; CAS算法、
Synchronized
、
Lock
、Happens-before等。 2. 线程的安全性手段,ThreadLocal、同步容器、并发容器、J.U.C包等3. AQS以及其他J.U.C组件,如CountDownLatch、Semaphore、CycliBarrier、Re
entr
ant
Lock
4. 线程池的原理5. ConcurrentHashMap等 课程大纲:
05-
synchronized
和 Re
entr
ant
Lock
的
实现原理
是什么?它们有什么
区别
?
在JDK 1.5 之前共享对象的协调机制只有
synchronized
和 volatile,在 JDK 1.5 中增加了新的机制 Re
entr
ant
Lock
,该机制的诞生并不是为了替代
synchronized
,而是在
synchronized
不适用的情况下,提供一种可以选择的高级功能。 那么,
synchronized
和 Re
entr
ant
Lock
是如何实现的?它们有什么
区别
? synch...
Synchronized
和 Re
entr
ant
Lock
的
实现原理
是什么?它们有什么
区别
?
synchronized
和 Re
entr
ant
Lock
是如何实现的?它们有什么
区别
? 在 JDK 1.5 之前共享对象的协调机制只有
synchronized
和 volatile,在 JDK 1.5 中增加了新的机制 Re
entr
ant
Lock
,该机制的诞生并不是为了替代
synchronized
,而是在
synchronized
不适用的情况下,提供一种可以选择的高级功能。 典型回答
synchronized
属于独占式悲观锁,是通过 JVM 隐式实现的,
synchronized
只允许同一时刻只有
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章