问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请问java中的lock和synchronized区别是什么?

发布网友 发布时间:2022-03-25 01:44

我来回答

3个回答

懂视网 时间:2022-03-25 06:05

synchronized和lock的异同如下:

  

  1、首先synchronized是java内置关键字,在jvm层面,Lock是个java类;

  

  2、synchronized无法判断是否获取锁的状态,Lock可以判断是否获取到锁;

  

  3、synchronized会自动释放锁(a 线程执行完同步代码会释放锁 ;b 线程执行过程中发生异常会释放锁),Lock需在finally中手工释放锁(unlock()方法释放锁),否则容易造成线程死锁;

  

  4、用synchronized关键字的两个线程1和线程2,如果当前线程1获得锁,线程2线程等待。如果线程1阻塞,线程2则会一直等待下去,而Lock锁就不一定会等待下去,如果尝试获取不到锁,线程可以不用一直等待就结束了;

  

  5、synchronized的锁可重入、不可中断、非公平,而Lock锁可重入、可判断、可公平(两者皆可);

  

  6、Lock锁适合大量同步的代码的同步问题,synchronized锁适合代码少量的同步问题。

热心网友 时间:2022-03-25 03:13

lock(), 如果获取了锁立即返回,如果别的线程持有锁,当前线程则一直处于休眠状态,直到获取锁
synchronized是在JVM层面上实现的,不但可以通过一些监控工具监控synchronized的锁定,而且在代码执行时出现异常,JVM会自动释放锁定,但是使用Lock则不行,lock是通过代码实现的,要保证锁定一定会被释放,就必须将unLock()放到finally{}中

热心网友 时间:2022-03-25 04:31

java中的lock和synchronized区别如下:

1、假设该场景下,ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定

如果使用 synchronized ,如果A不释放,B将一直等下去,不能被中断

如果使用ReentrantLock,如果A不释放,可以使B在等待了足够长的时间以后,中断等待,而干别的事情 ReentrantLock获取锁定与三种方式:

a)  lock(), 如果获取了锁立即返回,如果别的线程持有锁,当前线程则一直处于休眠状态,直到获取锁

b) tryLock(), 如果获取了锁立即返回true,如果别的线程正持有锁,立即返回false;c)tryLock(long timeout,TimeUnit unit), 如果获取了锁定立即返回true,如果别的线程正持有锁,会等待参数给定的时间,在等待的过程中,如果获取了锁定,就返回true,如果等待超时,返回false;

d) lockInterruptibly: 如果获取了锁定立即返回,如果没有获取锁定,当前线程处于休眠状态,直到或者锁定,或者当前线程被别的线程中断

2、synchronized是在JVM层面上实现的,不但可以通过一些监控工具监控synchronized的锁定,而且在代码执行时出现异常,JVM会自动释放锁定,但是使用Lock则不行,lock是通过代码实现的,要保证锁定一定会被释放,就必须将unLock()放到finally{}中

3、在资源竞争不是很激烈的情况下,Synchronized的性能要优于ReetrantLock,但是在资源竞争很激烈的情况下,Synchronized的性能会下降几十倍,但是ReetrantLock的性能能维持常态;

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 synchronized和lock的区别? synchronized和lock的区别 华为手机怎么设置人脸识别 华为手机设置人脸识别方法 华为荣耀手机如何设置人脸解锁 华为荣耀人脸解锁教程 苹果7充电时用苹果数据线和vivo充电头能行吗?影响手机吗? 苹果不是用原装充电器,对手机有坏处吗? 苹果pd充电器充不上电插上去没反应? iphone 7能用普通的充电器吗? 苹果的设备为什么用普通充电器充电会容易坏? 用不是苹果原装的充电器充iphone会不会充坏 iphone用别的充电器会使手机坏么 iphone边用边冲充电器会坏吗 iphone7支持pd快充吗 苹果7能不能用18瓦或12瓦的pd快冲头和pd数据线? IPHONE7用快充充电器会怎样 iPhone7能用pd快充吗? iphone7用快充头,对手机或者电池有损伤吗? PD充电器可以充iPhone7吗? pd插头支持iPhone7吗快吗? 苹果7用快充会坏吗 Lock和synchronized的区别和使用 synchronized和lock的区别 csdn java lock和synchorinzed的区别 面试synchronized和locak有什么异同 深入研究 Java Synchronize 和 Lock 的区别与用法 java同步锁中synchronized和Lock接口类的区别 java如何实现线程安全,synchronized和lock的区别,可重入锁 java中实现同步的两种方式syschronized和lock的区别和联系 ios开发synchronized和lock的区别 多线程安全实现方式,synchronized和lock,信号量的区别 synchronized和ReentrantLock的区别 synchronized与lock,哪个效率更高 拼多多的二维码在哪里扫 拼多多开蓝码二维码教程 别人发过来二维码,扫码别人就可以进入自己的拼多多店铺是怎么操作的? 别人发过来二维码,自己扫二维码别人就可以进入自己的拼多多店铺是怎么操作的_问一问 拼多多天天领现金为啥没有二维码 拼多多不想帮别人扫二维码领红包怎么办 为什么拼多多大转盘没有二维码 美团商家如何添加价格与商品