🌈hello,你好鸭,我是Ethan,西安电子科技大学大三在读,很高兴你能来阅读。
✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。
🏃人生之义,在于追求,不在成败,勤通大道。加油呀!
🔥个人主页:Ethan Yankang
🔥推荐:史上最强八股文||一分钟看完我的几百篇博客
🔥温馨提示:划到文末发现专栏彩蛋 点击这里直接传送
🔥本篇概览:详细讲解了volatile的相关缓存行的八股文的方方面面。🌈⭕🔥
【计算机领域一切迷惑的源头都是基本概念的模糊,算法除外】
目录
🌈序言:
JAVA八股文就是最最基础之事,此关不过,啥都没有。今日得《黑马程序员之八股》良品辅助,代码随想录之优品引导,《JAVA核心技术》之极品传教,应按此三者学之习之,时时复习,长此以往必能穿魂入脉,习得大功。
应该四处查阅浏览八股技术博客之,不应固守一隅,应集百家之所长而习得内功。
对于一个强烈想完全掌握JAVA的技术宅来说,JAVA的XXX万万不能放过,这些基础的概念例程都值得细细体味的,千万别觉得都是文字,浪费时间,记住——别违背科学发展的客观规律。别一味地赶进度以满足自己学的都么快的虚荣心,自欺欺人,要老老实实的走好每一步。
每一次复习八股文都是复习JAVA基础的绝佳机会,切借此机会融会贯通之。
🌈从五个维度讲解volatile
- JAVA源码
- ByteCode源码
- JVM虚拟机规范
- Hotspot实现
- CPU级别
🌈源码级别
volatile int i
当一个字段被 volatile
修饰后:
1.保证线程间的可见性。
在内存层面,对于普通变量,线程可能会将其值缓存在本地内存(比如 CPU 缓存)中,导致不同线程看到的值可能不一致。而被 volatile
修饰的变量,它会立即将修改后的值刷新到主内存。
其他线程读取该变量时,会强制从主内存中重新获取最新的值,而不是使用本地缓存中的值。
2.禁止指令重排序。
另外,由于禁止了指令重排序,这意味着与 volatile
变量相关的内存读写操作在内存中的顺序是固定的,不会因为优化而被打乱,确保了内存操作的顺序符合程序编写的逻辑。
简而言之,volatile
修饰符通过强制线程与主内存的交互以及限制内存操作的顺序,来解决多线程环境下与该变量相关的内存可见性和指令执行顺序问题。
🌈字节码级别
用volatile修饰的字段会多一个标记:ACC_FLAGS。
🌈System.nanoTime()
是 Java 中的一个方法,用于获取当前系统的高精度时间,以纳秒为单位。它通常用于测量时间间隔,特别是对于需要高精度计时的场景,比如性能测试、微基准测试等。
🌈技术面要广:由软到硬,由宏到微,由点到面。
💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖
热门专栏推荐
🌈🌈计算机科学入门系列 关注走一波💕💕
🌈🌈CSAPP深入理解计算机原理 关注走一波💕💕
🌈🌈微服务项目之黑马头条 关注走一波💕💕
🌈🌈redis深度项目之黑马点评 关注走一波💕💕
🌈🌈JAVA面试八股文系列专栏 关注走一波💕💕
🌈🌈JAVA基础试题集精讲 关注走一波💕💕
🌈🌈代码随想录精讲200题 关注走一波💕💕
总栏
🌈🌈JAVA基础要夯牢 关注走一波💕💕
🌈🌈JAVA后端技术栈 关注走一波💕💕
🌈🌈JAVA面试八股文 关注走一波💕💕
🌈🌈JAVA项目(含源码深度剖析) 关注走一波💕💕
🌈🌈计算机四件套 关注走一波💕💕
🌈🌈数据结构与算法 关注走一波💕💕
🌈🌈必知必会工具集 关注走一波💕💕
🌈🌈书籍网课笔记汇总 关注走一波💕💕
📣非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞👍 关注❤收藏✅ 评论💬,大佬三连必回哦!thanks!!!
📚愿大家都能学有所得,功不唐捐!