synchronized和ReentrantLock对比

概念

  • synchronized,翻译同步,俗称内置锁
  • ReentrantLock,Re-entrant-Lock,俗称重入锁,显示锁

synchronized的使用

  • 当synchronized作用于普通方法是,锁对象是this;
  • 当synchronized作用于静态方法是,锁对象是当前类的Class对象;
  • 当synchronized作用于代码块时,锁对象是synchronized(obj)中的这个obj。

相同点

  • 互斥性
  • 内存可见性
  • 可以重入(只是针对ReentrantLock)

不同点

  • ReentrantLock实现Lock接口,需要显示的加锁和解锁
  • ReentrantLock提供了非阻塞获取锁的方式,tryLock()
  • ReentrantLock提供了超时获取锁的方式,tryLock(long timeout, TimeUnit unit)
  • ReentrantLock能被中断的获取锁的方式,lockInterruptibly()

性能对比

  • 在jdk5,并发量超过64,性能对比为4
  • 在jdk5,并发量超过64,性能对比为1.x
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 摘要: 我们已经知道,synchronized 是Java的关键字,是Java的内置特性,在JVM层面实现了对临界...
    kingZXY2009阅读 5,791评论 0 20
  • 我们已经知道,synchronized 是java的关键字,是Java的内置特性,在JVM层面实现了对临界资源的同...
    valor_wang阅读 3,030评论 0 1
  • 作者: 一字马胡 转载标志 【2017-11-03】 更新日志 前言 在java中,锁是实现并发的关键组件,多个...
    一字马胡阅读 44,274评论 1 32
  • 在一般性开发中,笔者经常看到很多同学在对待java并发开发模型中只会使用一些基础的方法。比如Volatile,sy...
    张勇_bf29阅读 3,968评论 0 1
  • 前言 上一篇文章《基于CAS操作的Java非阻塞同步机制》 分析了非同步阻塞机制的实现原理,本篇将分析一种以非同步...
    Mars_M阅读 10,272评论 5 9

友情链接更多精彩内容