Volatile的优缺点
3.Volatile的优缺点
有点:Volitile修饰的成员变量在每次被线程访问是,都强迫从共享内存中重读成员变量的值;当成员变量发生变化是,强迫线程将变化值回写到共享内存;这样可以让多个线程总是看到某个成员变量的同一个值
Volite关键字就是提示VM:对于这个成员变量不能保存它的私有拷贝,而应该直接语共享成员变量交互;
使用建议:在两个或者更多的线程访问成员变量是使用Volitile;
当要访问的变量已在synchronized代码块中,或者为常量时,不必使用
缺点:Volatile屏蔽掉了VM必要的代码优化,所以在效率上比较低,一定在必要是使用此关键字
Volatile的优缺点相关推荐
- Java并发知识梳理(上):并发优缺点,线程状态转换,Java内存模型,Synchronized,Volatile,final,并发三特性,Lock与AQS,ReetrandLock
努力的意义,就是,在以后的日子里,放眼望去全是自己喜欢的人和事! 整个系列文章为Java并发专题,一是自己的兴趣,二是,这部分在实际理解上很有难度,另外在面试过程中也是经常被问到.所以在学习过程中,记 ...
- CAS(比较并交换)学习CAS实现原子性+volatile实现可见性,cas与synchronized比较的优缺点
1.CAS底层原理? 自旋锁(cas思想)+unsafe类,保证原子性靠的是unsafe类 1.首先可以看到: atomicInteger.getAndIncrement(); getAndIncre ...
- **Java有哪些悲观锁的实现_面试4连问:乐观锁与悲观锁的概念、实现方式、场景、优缺点?...
推荐阅读: 数据库面试4连问:分库分表,中间件,优缺点,如何拆分? 终极手撕之架构大全:分布式+框架+微服务+性能优化,够不够? 消息队列面试,你能顶得住面试官这波10大连环炮的攻势吗? 01 乐观锁 ...
- Java 并发编程CAS、volatile、synchronized原理详解
CAS(CompareAndSwap) 什么是CAS? 在Java中调用的是Unsafe的如下方法来CAS修改对象int属性的值(借助C来调用CPU底层指令实现的): /*** * @param o ...
- 聊聊这8种单例模式的优缺点
1.什么是单例模式? 当我们new一个对象时会帮我们申请内存地址,每一次去new的时候都会构建不同的地址,而单例模式就是每次获取的实例化对象都保证是同一份.常见的单例模式有8种写法,每一种单例模式都有 ...
- Java 高并发第二阶段实战---高并发设计模式,内存模型,CPU一致性协议,volatile关键字剖析
第二阶段的课程主要围绕着Volatile关键字,内存重排序,Happen-Before,Cpu一致性协议,高并发下的设计模式以及类加载器几个大的方面展开,下面是内容详细信息,本教程是本人录制,下载地址 ...
- IOS单例模式及单例模式的优缺点
单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. #import <Foundation/Foundation.h&g ...
- C语言编程宏定义的优缺点,C语言重要知识点总结(二)--内存结构、函数调用过程(栈帧)、宏的优缺点以及##和#的使用...
一.内存结构 内存大致可以分为四个部分:代码段,静态存储区,堆,栈. 具体划分如下图所示: 栈:在执行函数时,函数内部局部变量的存储单元都可以在栈上创建,函数执行结束后会自动释放内存.栈内存的分配运算 ...
- 乐观锁与悲观锁的概念、实现方式、场景、优缺点?
01 乐观锁与悲观锁的基本概念 何为乐观锁与悲观锁? 答:乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展.这两种人各有优缺点,不能不以场景而 ...
最新文章
- 9076什么意思_9076西南大学人力资源开发与管理答案
- oracle取本月最后一天是星期几_Oracle取得本月、本年第一天和最后一天
- 铃木uy125摩托车机油_济南铃木安徽发布国四新车—6480元瑞梦125、9380元UY125
- 你的博士三五年,不艰辛?
- Ubuntu16.04下Neo4j图数据库官网安装部署步骤(图文详解)(博主推荐)
- 利用 OpenMP 实现埃拉托斯特尼(Eratosthenes)素数筛法并行化
- 在MNIST图像上训练卷积神经网络
- UVA10229 Modular Fibonacci 【循环数列】
- Visual Studio中View页面与Js页面用快捷键互相跳转
- UnicodeEncodeError: #39;ascii#39; codec can#39;t encode character u#39;\u5929#39; in position 2...
- mysql 实现row_number_MySQL实现ROW_NUMBER()
- iview render设置属性_iView 发布 3.4.0 版本,代号 BestLuck
- 预测算法模型(灰色预测和BP神经网络)
- codeforces [Gym-100814E]
- Java复习第二弹!
- MHZ是计算机的什么单位,电脑mhz是什么意思
- 人性的弱点 ——戴尔卡耐基(笔记)
- unity详细解决visualstudio未能找到类型或命明空间名问题
- 北邮计算机学院专业分析,2019-2021北京邮电大学考研数据分析
- 如何提高程序员键盘使用效率