synchronized优化了哪些内容?

简介: synchronized优化

在JDK1.6之前,synchronized的实现直接调用ObjectMonitor的enter和exit,这种锁被称之为重量级锁。从JDK6开始,HotSpot虚拟机开发团队对Java中的锁进行优化,如增加了适应性自旋、锁消除、锁粗化、轻量级锁和偏向锁等优化策略,提升了synchronized的性能。

  • 偏向锁:在无竞争的情况下,只是在Mark Word里存储当前线程指针,CAS操作都不做。
  • 轻量级锁:在没有多线程竞争时,相对重量级锁,减少操作系统互斥量带来的性能消耗。但是,如果存在锁竞争,除了互斥量本身开销,还额外有CAS操作的开销。
  • 自旋锁:减少不必要的CPU上下文切换。在轻量级锁升级为重量级锁时,就使用了自旋加锁的方式
  • 锁粗化:将多个连续的加锁、解锁操作连接在一起,扩展成一个范围更大的锁。
  • 锁消除:虚拟机即时编译器在运行时,对一些代码上要求同步,但是被检测到不可能存在共享数据竞争的锁进行消除。
相关文章
|
1月前
|
存储 安全 Java
Synchronized 优化
Synchronized 优化
|
4月前
|
Java
学习多线程之synchronized记录
学习多线程之synchronized记录
25 0
|
8月前
架构系列——你可能不知道的那些synchronized使用细节
架构系列——你可能不知道的那些synchronized使用细节
|
10月前
|
Java 编译器
volatile关键词在多线程中的应用
volatile关键词在多线程中的应用
36 0
volatile关键词在多线程中的应用
|
SQL 缓存 安全
synchronized和volatile底层原理分析
CAS Compare And Swap (Compare And Exchange) / 自旋 / 自旋锁 / 无锁 因为经常配合循环操作,直到完成为止,所以泛指一类操作 cas(v, a, b)
75 0
|
安全 Java
【多线程:synchronized优化原理】
【多线程:synchronized优化原理】
149 0
|
缓存 Java
面经 - 【多线程】在Java中Lock接口比synchronized块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?
面经 - 【多线程】在Java中Lock接口比synchronized块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?
359 0
|
前端开发 Java 程序员
彻底读懂ThreadLocal与Synchronized区别(代码案例详解)
📝本篇用案例代码带初学者彻底读懂ThreadLocal与Synchronized区别!
134 0
彻底读懂ThreadLocal与Synchronized区别(代码案例详解)
|
Java
Java多线程之synchronized关键词(Demo详解)
你好我是辰兮,很高兴你能来阅读,本篇文章为大家讲解Java多线程之synchronized关键词,下面有案例的截图和相关代码可以自行实践,相关的更多面试知识已经提前整理好文章可以阅读学习,分享获取新知,希望对Java初学者有帮助。
129 0
Java多线程之synchronized关键词(Demo详解)