lock vs synchronized lock和synchronized的异同

·语法层面         
         1.synchronized是关键字,源码在 jvm 中,用 c + +语言实现         
         2.Lock是接口,源码由 jdk 提供,用 java 语言实现         
         3.使用 Synchronized 时,退出同步代码块锁会自动释放,而使用Lock时,需要手动调用   
unlock方法释放锁 

·功能层面         
         1.二者均属于悲观锁、都具备基本的互斥、同步、锁重入功能         
         2.Lock提供了许多synchronized不具备的功能,例如获取等待状态、公平锁、可打断、
        可超时、多条件变量         
         3.Lock 有适合不同场景的实现,如 ReentrantLock,ReentrantReadwriteLock 

·性能层面         
         1.在没有竞争时,synchronized做了很多优化,如偏向锁、轻量级锁,性能OK   
         2.在竞争激烈时,Lock的实现通常会提供更好的性能 

     
java线程之可重入锁_好奇的菜鸟的博客-CSDN博客_java 可重入锁一、什么是可重入锁可重入锁就是可以重复进入的锁,也叫递归锁。前提是同一把锁,如同一个类、同一个实例。来自知乎的解释:可重入锁指的是同一个线程外层函数获得锁之后,内层递归函数仍然能获取该锁的代码,在同一个线程在外层方法获取锁的时候,在进入内层方法会自动获取锁。也就是说,线程可以进入任何一个他已经拥有锁的所有同步代码块。Coffey强的解释:可重入锁,指的是以线程为单位,当一个线程获取对象锁之后,这个线程可以再次获取本对象上的锁,而其他的线程是不可以的。synchronized 和 Reentrahttps://blog.csdn.net/qq_29752857/article/details/124645336
Java的锁:公平锁,非公平锁,可重入锁,自旋锁,独占锁(写锁) / 共享锁(读锁) / 互斥锁 - 知乎在Java并发场景中,会涉及到各种各样的锁,比如:高并发编程系列:4种常用Java线程锁的特点,性能比较、使用场景,这些锁有对应的种类:公平锁,乐观锁,悲观锁等等,这篇文章来详细介绍各种锁的分类: 公平锁/非…https://zhuanlan.zhihu.com/p/413590862Synchronized和Lock的区别_kusk星辰的博客-CSDN博客_synchronized和lock的区别1.synchronized是一个关键字而lock是一个接口(lock、lockInterruptibly、tryLock、unlock、newCondition)。2.synchronized是隐式的加锁,lock是显示的加锁。3.synchronized可以作用在方法和代码块上,而lock只能作用在代码块上。synchronized作用在静态方法上锁的是当前类的class,作用在普通方法上锁的是当前类的对象。在javap反编译成字节码后,synchronized关键字需要有一个代码块进入的点mohttps://blog.csdn.net/qq_42481883/article/details/123841800?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-0-123841800-blog-125304308.pc_relevant_paycolumn_v3&spm=1001.2101.3001.4242.1&utm_relevant_index=3
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值