1. 原始构成:synchronized是JVM层面的,底层通过monitorenter和monitorexit来实现的。Lock是JDK API层面的。(synchronized一个enter会有两个exit,一个是正常退出,一个是异常退出(保证肯定可以退出))
  2. 使用方法:synchronized不需要手动释放锁,而Lock需要手动释放。
  3. 是否可中断:synchronized不可中断,除非抛出异常或者正常运行完成。Lock是可中断的,1.设置超时方法tryLock(long timeout,TimeUnit unit); 2. lockInterruptibly()方法放代码块中,调用interrupt()
  4. 是否为公平锁:synchronized只能是非公平锁,而ReentrantLock既能是公平锁,又能是非公平锁,构造方法传入false/true,默认是非公平锁false。
  5. 绑定多个条件:synchronized不能,只能随机唤醒。而Lock可以通过Condition来绑定多个条件,精确唤醒。

synchronized和ReentrantLock区别,用新的lock有什么好处?举例说说相关推荐

  1. synchronized和ReentrantLock区别浅析 (转载地址:http://blog.csdn.net/zmx729618/article/details/51594166)

    一.什么是sychronized sychronized是java中最基本同步互斥的手段,可以修饰代码块,方法,类. 在修饰代码块的时候需要一个reference对象作为锁的对象. 在修饰方法的时候默 ...

  2. synchronized和ReentrantLock区别

    1.区别: 1)Lock是一个接口,synchronized是Java中的关键字,synchronized是内置的语言实现: 2)synchronized发生异常时,会自动释放线程占用的锁,故不会发生 ...

  3. java 同步方式 lock_java的两种同步方式, Synchronized与ReentrantLock的区别

    java在编写多线程程序时,为了保证线程安全,需要对数据同步,经常用到两种同步方式就是Synchronized和重入锁ReentrantLock. 相似点: 这两种同步方式有很多相似之处,它们都是加锁 ...

  4. synchronized和ReentrantLock的5个区别!

    作者 | 磊哥 来源 | Java面试真题解析(ID:aimianshi666) 转载请联系授权(微信ID:GG_Stone) 在 Java 中,常用的锁有两种:synchronized(内置锁)和 ...

  5. Lock锁与synchronized锁的区别

    Lock锁与synchronized锁的区别 1.synchronized锁是可以帮助我们自动开锁和关闭锁 2.Lock锁,我们最常用的是ReentrantLock重入锁,需要我们手动的开锁和手动关锁 ...

  6. 线程安全(二)Lock 什么是Lock线程锁?与synchronized区别在哪?Lock锁是如何实现等待通知的?如何实现线程顺序执行?

    文章目录 前言 一.synchronized的缺陷 二.Lock接口的特性及基本方法 接口的特性 接口基本的方法: 三.ReentrantLock介绍及实例 ReentrantLock类常见方法: l ...

  7. 【每日一题~001】谈谈synchronized与ReentrantLock的区别?

    每日一题,共同成长,见证奇迹,加油老铁 问题:谈谈synchronized与ReentrantLock的区别?思考:2分钟...答案如下:1.底层实现:1)synchronized 是JVM层面的锁, ...

  8. lock和synchronized的同步区别与选择

    区别如下: 1. lock是一个接口,而synchronized是java的一个关键字,synchronized是内置的语言实现:(具体实现上的区别在<Java虚拟机>中有讲解底层的CAS ...

  9. 【并发编程】线程锁--Synchronized、ReentrantLock(可重入锁)

    在说锁之前,我们要明白为什么要加锁,不加锁会怎样? 在并发编程中,很容易出现线程安全问题,接下来我们看个很经典的例子--银行取钱,来看一下有关线程安全的问题. 取钱的流程可以分为一下几个步骤: 1.用 ...

最新文章

  1. 规划2021年技术路标,百度研究院做出了这样一份预测
  2. P1215 母亲的牛奶
  3. vsnprintf的作用和使用
  4. grafana安装升级部署
  5. [DP]【最大全零矩阵】【2015.7.9TEST】E
  6. python config
  7. 使用Qt创建XML文档及XML文档的增删改
  8. 2016年 第7届 蓝桥杯 Java B组 省赛解析及总结
  9. python if语句能否判断中文_Python“if”语句被忽略
  10. 日常问题——Mac下新建目录报Read-only file system
  11. 中的枚举属性函数_软件特攻队|Qt中的反射机制之Q_PROPERTY
  12. 前沿 | 加州理工大学什么是Imitation Learning(模仿学习)
  13. 国内常见的14款低代码平台介绍
  14. 域名和服务器IP地址有什么关系
  15. Educational Codeforces Round 95 (Rated for Div. 2)C. Mortal Kombat Tower(状态机dp)
  16. 翟佳:优秀的开源项目应该被更多人看见,我很荣幸可以参与其中
  17. Matlab中的persistent变量
  18. 为何企业级架构日益盛行?
  19. 哔哩哔哩2020校园招聘 - K个一组翻转链表 一年中的第几天
  20. 巫师3储物箱在哪_巫师3全宝藏宝箱地图分享 各种宝藏的具体位置

热门文章

  1. Java中文乱码问题(转)
  2. Tomcat项目部署过程中的问题
  3. Know more about Cache Buffer Handle
  4. 有意思的小学数学竞赛题-2
  5. [Kali][VMware][2020][窗口大小][分辨率]高分辨率自适应
  6. 架构设计分布式数据结构与算法面试题
  7. HDU 4403 A very hard Aoshu problem DFS
  8. L2-002 链表去重 (25 分) 船新方法
  9. php 伪静态是什么意思,路由与伪静态
  10. fedora 33 topbar_最新!新增确诊病例33例,其中本土病例1例