首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
锁有了解嘛,说一下Synchronized和lock
[问答题]
请你谈谈关于Synchronized和lock
查看答案及解析
添加笔记
求解答(0)
邀请回答
收藏(97)
分享
纠错
6个回答
添加回答
1
西瓜同学🏀
synchronized是Java的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。JDK1.5以后引入了自旋锁、锁粗化、轻量级锁,偏向锁来有优化关键字的性能。 Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现;synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;而Lock在发生异常时,如果没有主动通过unLock()去释放锁,则很可能造成死锁现象,因此使用Lock时需要在finally块中释放锁;Lock可以让等待锁的线程响应中断,而synchronized却不行,使用synchronized时,等待的线程会一直等待下去,不能够响应中断;通过Lock可以知道有没有成功获取锁,而synchronized却无法办到。
发表于 2019-05-02 00:52:57
回复(0)
更多回答
6
Allen烽
这道题应该是看你对于这俩者的区别和优缺点还有使用场景上的注意。
首先lock是接口synchronized是关键字,然后lock是显示锁(即加锁和解锁的过程可见并且需要我们自己控制)S是隐式锁。然后S可以用来修饰方法代码块。Lock的话需要它的一些实现类来做到加锁和解锁比如我们很长用的ReentrantLock或者分布式领域会用到的ReentrantReadWriteLock。用法上的话,一般我们S的话不怎么需要关注他的锁释放,因为代码块执行完毕或者报错都会释放锁,而lock的话我们通常需要使用trycatchfinally这种形式在finally中去unlock释放锁。另外S在读写锁方面没有Lock灵活,设想一下ABC三个线程,俩个读文件一个写文件,如果是S的你只能依次来加锁解锁,而Lock可以让读
共享,这样不是很好嘛。
另外S在1.6之前的话是重量级锁,性能远不如ReentrantLock,在1.6以后做了大幅的优化,引入了偏向锁,轻量级锁,自旋锁,自适应自旋,锁粗化,锁消除等机制,具体想看优化详细的话可以参考书籍周志明老师的深入理解java虚拟机的最后一章。
最后提一点,S和ReentrantLock都属于可重入锁。
发表于 2019-02-26 09:18:36
回复(0)
2
TiAmo_9955
发表于 2019-05-05 09:34:55
回复(0)
2
啦啦啦我是卖报小行家
java锁中的两个基本工具
发表于 2019-02-25 13:29:12
回复(0)
1
zyz_Re
两者的功能相差不大
发表于 2019-03-25 11:15:25
回复(0)
0
<(-︿-)>...
话说你们回答时,也和自己敲键盘时的答案一直吗。。。。不懂怎么去表达啊。。。求教
发表于 2019-09-21 17:38:35
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
Java
Java工程师
上传者:
小小
难度:
6条回答
97收藏
4233浏览
热门推荐
相关试题
3.下列关于表中西部省市区2006...
资料分析
言语理解与表达
资料分析
评论
(1)
4.该校1997年男女教师的比例为...
资料分析
言语理解与表达
资料分析
评论
(1)
计算机在工作过程中,若突然停电,(...
计算机常识
普及
C++
Pascal
选择题
评论
(1)
来自
NOIP2008初赛普及组
Mysql中表student_in...
数据库
SQL
评论
(1)
SQL中,下列涉及空值的操作不正确...
SQL
评论
(0)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题