马士兵系列——volatile2——JVM级别、汇编级别、CPU级别的实现

🌈hello,你好鸭,我是Ethan,西安电子科技大学大三在读,很高兴你能来阅读。

✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。
🏃人生之义,在于追求,不在成败,勤通大道。加油呀!

🔥个人主页:Ethan Yankang
🔥推荐:史上最强八股文||一分钟看完我的几百篇博客

🔥温馨提示:划到文末发现专栏彩蛋   点击这里直接传送

🔥本篇概览:详细讲解了volatile关键字的底层实现八股文的方方面面。🌈⭕🔥


【计算机领域一切迷惑的源头都是基本概念的模糊,算法除外】


🌈序言:

JAVA八股文就是最最基础之事,此关不过,啥都没有。今日得《黑马程序员之八股》良品辅助,代码随想录之优品引导,《JAVA核心技术》之极品传教,应按此三者学之习之,时时复习,长此以往必能穿魂入脉,习得大功。

应该四处查阅浏览八股技术博客之,不应固守一隅,应集百家之所长而习得内功。

对于一个强烈想完全掌握JAVA的技术宅来说,JAVA的XXX万万不能放过,这些基础的概念例程都值得细细体味的,千万别觉得都是文字,浪费时间,记住——别违背科学发展的客观规律。别一味地赶进度以满足自己学的都么快的虚荣心,自欺欺人,要老老实实的走好每一步。

每一次复习八股文都是复习JAVA基础的绝佳机会,切借此机会融会贯通之。


🔥 史上最全JAVA八股文,欢迎收藏 -CSDN博客

🔥 所有JAVA基础一键查阅(含习题集)-CSDN博客


​​​​​​​🌈禁止指令重排序:

🌈CPU 的乱序执行

如果指令1在指令2前面,但是CPU在执行指令1时要去内存中读取数据,耗时慢(内存慢了100倍)。这期间,CPU就直接先将指令2执行了(但是有一定的条件限制,比如指令2不能依赖于指令1)

看上去就像是CPU先将指令2执行了。


作用:提效率,而非乱。


JVM级别实现🔥

🌈JVM规范指令不能重排序的8种情况

又称为happened-before原则。注意jvm只是规范,需要我们去源码中实现之,里面就有一个volatile关键字。这就是我们的主角!


🌈volatile关键字的原理

在可能发生指令重排序的指令之间插入一堵墙即可。主页属于叫——“内存屏障”。


凡是实现了JVM的虚拟机,就必须实现四种逻辑上的屏障,如下:


凡是用volatile修饰的内存变量,在写(store)的时候,该指令的前面后面都加屏障。读(load)亦然。


汇编级别实现🔥

🌈内存有序性指令

读屏障、写屏障、全屏障


CPU级别实现🔥

🌈LOCK总线锁

volatile的底层实现指令就是它。

简单粗暴,不仅解决了指令从排序,还解决了线程可见性。

这是一种更6b的实现指令,原子指令LOCK——>FULL BARRIER

一个CPU(线程)执行指令去读数据的时候,直接将系统总线给锁住,其他指令就不能执行,只能等待该CPU将该指令读取回来,将LOCK释放,其他CPU核心(其他线程)才能访问之。示意图如下(最左边又徒手花了一个CPU)。

说白了就是上厕所,里面只有一个坑位,上完了,别人才能上。



JIT程序优化

java” 表示运行 Java 程序。

-XX:+UnlockDiagnosticVMOptions” 用于解锁诊断虚拟机选项。

-XX:+PrintAssembly” 表示启用打印汇编代码的功能。

T” 可能是您要运行的 Java 类的名称或其他相关参数。

> 1.txt” 表示将命令执行过程中输出的内容重定向到名为“1.txt”的文件中,以便后续查看和分析。

使用上面这行代码会打印出汇编,很长,但其中就有m()、n()方法的底层实现,就会看到又LOCK指令,禁止JIT优化。


🌈技术面要广:



💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖

热门专栏推荐

🌈🌈计算机科学入门系列                     关注走一波💕💕

🌈🌈CSAPP深入理解计算机原理        关注走一波💕💕

🌈🌈微服务项目之黑马头条                 关注走一波💕💕

🌈🌈redis深度项目之黑马点评            关注走一波💕💕

🌈🌈JAVA面试八股文系列专栏           关注走一波💕💕

🌈🌈JAVA基础试题集精讲                  关注走一波💕💕   

🌈🌈代码随想录精讲200题                  关注走一波💕💕


总栏

🌈🌈JAVA基础要夯牢                         关注走一波💕💕  

🌈🌈​​​​​​JAVA后端技术栈                          关注走一波💕💕  

🌈🌈JAVA面试八股文​​​​​​                          关注走一波💕💕  

🌈🌈JAVA项目(含源码深度剖析)    关注走一波💕💕  

🌈🌈计算机四件套                               关注走一波💕💕  

🌈🌈数据结构与算法                           ​关注走一波💕💕  

🌈🌈必知必会工具集                           关注走一波💕💕

🌈🌈书籍网课笔记汇总                       关注走一波💕💕         



📣非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞👍 关注❤收藏✅ 评论💬,大佬三连必回哦!thanks!!!
📚愿大家都能学有所得,功不唐捐!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值