| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Volatile理解 -> 正文阅读 |
|
[Java知识库]Volatile理解 |
????????最近网上看到一份题目,发现好多题目都是只有印象知道大概,具体深入的地方记不清了 volatile三大特性: ? ? ? ? 1. 保证可见性 ? ? ? ? 2.不保证原子性 ? ? ? ? 3.禁止指令重排 可见性:当一个线程修改了主内存(堆)中对象的值时,通知其他线程值已经修改 可见性验证:代码验证
原子性:指一个操作要么完成,要么失败不能中断。 原子性代码验证:gitee代码验证
volatile不能保证原子性怎么处理? 使用原子类进行处理使用原子类解决volatile不能保证原子性的问题
? 原子类为什么可以保证原子性: ? ? ? ? 原子类调用jdk中rt.jar? com.misc.Unsafe?
3 传入三个参数,对象本身(预期值,从主内存中复制得到,后面会讲的)、值偏移量(对象的内存地址/指针)、add的入参。
var5 = this.getIntVolatile(var1, var2);通过native拿到内存中的最新值,这个值为预期值 compareAndSwapInt(var1, var2, var5, var5 + var4));CAS思想,比较预期值与内存中的真实值,相等则将var5+var4更新到内存,否则更新var的值继续这个比较过程。 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年4日历 | -2025/4/19 4:57:41- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |