【你问我答】synchronized与lock的区别

问题描述:

synchronized与lock有什么区别?

回答有奖:

选取一位认真回答问题的牛友,赠送200牛币!
▶回答尽量有自己的思考,不要单纯的只是复制粘贴定理定义,或者他人blog哦~

你问我答问题汇总:点击进入
关注你问我答栏目:点击关注

你问我答 - 答问题,成大佬,拿牛币!
你问我答是牛客新栏目,每周1期几个面试中真实遇到的问题,
牛友在问题贴下留下自己的知识,经验与见解,
帮助更多牛友了解更多技术相关知识!
#面试题目##Java工程师#
全部评论
1、原始构成: synchronized是关键字,属于JVM层面,底层是由一对monitorenter和monitorexit指令实现的。 ReentrantLock是一个具体类,是API层面的锁。 2、使用方法: synchronized不需要用户手动释放锁,当synchronized代码块执行完成后,系统会自动让线程释放对锁的占用 ReentrantLock需要用户手动释放锁,若没有手动释放可能导致死锁现象。 3、等待是否可中断: synchronized不可中断,除非抛出异常或者正常运行完成 ReentrantLock可中断 4、加锁是否公平: synchronized非公平锁 ReentrantLock两者都可以,默认是非公平锁。 5、锁绑定多个条件Condition: synchronized没有。 ReentrantLock可用来分组唤醒需要唤醒的线程。而不是像synchronized要么随机唤醒一个线程,要么唤醒所有线程。
点赞 回复 分享
发布于 2020-10-20 23:07
1、synchronized和lock的用法区别 synchronized:在需要同步的对象中加入此控制,synchronized可以加在方法上,也可以加在特定代码块中,括号中表示需要锁的对象。 lock:一般使用ReentrantLock类做为锁。在加锁和解锁处需要通过lock()和unlock()显示指出。所以一般会在finally块中写unlock()以防死锁。 2、synchronized和lock性能区别 synchronized是托管给JVM执行的, 而lock是java写的控制锁的代码。 3、synchronized和lock用途区别 synchronized原语和ReentrantLock在一般情况下没有什么区别,但是在非常复杂的同步应用中,请考虑使用ReentrantLock,特别是遇到下面2种需求的时候。 1.某个线程在等待一个锁的控制权的这段时间需要中断 2.需要分开处理一些wait-notify,ReentrantLock里面的Condition应用,能够控制notify哪个线程 3.具有公平锁功能,每个到来的线程都将排队等候 下面解释一波~~ 先说第一种情况,ReentrantLock的lock机制有2种,忽略中断锁和响应中断锁,这给我们带来了很大的灵活性。比如:如果A、B 2个线程去竞争锁,A线程得到了锁,B线程等待,但是A线程这个时候实在有太多事情要处理,就是一直不返回,B线程可能就会等不及了,想中断自己,不再等待这个锁了,转而处理其他事情。这个时候ReentrantLock就提供了2种机制:可中断/可不中断 第一,B线程中断自己(或者别的线程中断它),但是ReentrantLock不去响应,继续让B线程等待,你再怎么中断,我全当耳边风(synchronized原语就是如此); 第二,B线程中断自己(或者别的线程中断它),ReentrantLock处理了这个中断,并且不再等待这个锁的到来,完全放弃。
点赞 回复 分享
发布于 2020-10-20 19:00
Lock 和 synchronized 的区别 1.Lock是接口,synchronized 是关键字 2.Lock 可以判断是否获取锁 而synchronized 不能 3.Lock需要手动释放锁,而synchronized 不需要 4.Lock在等待时可中断或不可中断,而synchronized 无法中断 5.Lock可重入锁,可以公平也可以不公平,synchronized 可重入锁,非公平 6. Synchronized 可以锁类 锁代码块 锁方法,而Lock 只可以锁代码块 7. Synchronized  适合锁少量代码同步问题(就是说用Synchronized 修饰的代码块中,代码一定要少),而Lock 适合锁大量的代码
点赞 回复 分享
发布于 2020-10-20 16:03

相关推荐

点赞 评论 收藏
分享
激昂墓志铭_终章:亚新经典实习3300,转正7k外包。去那干啥,还要加班
投递亚信科技(中国)有限公司等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务