Java——》JVM对原生的锁做了哪些优化

推荐链接:

总结------》【Java】

总结------》【Mysql】

总结------》【Redis】

总结------》【Kafka】

总结------》【Spring】

总结------》【SpringBoot】

总结------》【MyBatis、MyBatis-Plus】

总结------》【Linux】

总结------》【MongoDB】

总结------》【Elasticsearch】

Java------》JVM对原生的锁做了哪些优化

在Java6之前,Monitor的实现完全依赖底层操作系统的互斥锁来实现,由于Java层面的线程与操作系统的原生线程有映射关系,如果要将一个线程进行阻塞或唤起都需要操作系统的协助,这就需要从用户态切换到内核态来执行,这种切换代价十分昂贵,很消耗处理器时间,现代JDK中做了大量的优化。

优化1:使用自旋锁

在线程进行阻塞操作之前先让线程自旋等待一段时间,可能在等待期间其他线程已经解锁,这时就无需再让线程执行阻塞操作,避免了用户态到内核态的切换。

优化2:提供了3种不同的Monitor实现(3种不同的锁)

  1. 偏向锁
  2. 轻量级锁
  3. 重量级锁

当JVM检测到不同的竞争状况时,会自动切换到适合的锁实现,这就是锁的升级、降级(Java------》synchronized锁升级)。

相关推荐
leo__5205 分钟前
基于菲涅耳衍射积分的空心高斯光束传输数值模拟(MATLAB实现)
开发语言·matlab
昵称已被吞噬~‘(*@﹏@*)’~6 分钟前
【RL+空战】学习记录03:基于JSBSim构造简易空空导弹模型,并结合python接口调用测试
开发语言·人工智能·python·学习·深度强化学习·jsbsim·空战
短剑重铸之日16 分钟前
《SpringBoot4.0初识》第一篇:前瞻与思想
java·开发语言·后端·spring·springboot4.0
2501_9418779822 分钟前
从配置热更新到运行时自适应的互联网工程语法演进与多语言实践随笔分享
开发语言·前端·python
lsx20240627 分钟前
Python 运算符详解
开发语言
蓝色王者37 分钟前
springboot 2.6.13 整合flowable6.8.1
java·spring boot·后端
程序炼丹师42 分钟前
CMakeLists中 get_filename_component详解
开发语言
Tao____1 小时前
基于Ruoyi开发的IOT物联网平台
java·网络·物联网·mqtt·网络协议
꧁Q༒ོγ꧂1 小时前
C++ 入门完全指南(四)--函数与模块化编程
开发语言·c++