3.Volatile的优缺点
有点:Volitile修饰的成员变量在每次被线程访问是,都强迫从共享内存中重读成员变量的值;当成员变量发生变化是,强迫线程将变化值回写到共享内存;这样可以让多个线程总是看到某个成员变量的同一个值
Volite关键字就是提示VM:对于这个成员变量不能保存它的私有拷贝,而应该直接语共享成员变量交互;
使用建议:在两个或者更多的线程访问成员变量是使用Volitile;
当要访问的变量已在synchronized代码块中,或者为常量时,不必使用
缺点:Volatile屏蔽掉了VM必要的代码优化,所以在效率上比较低,一定在必要是使用此关键字

Volatile的优缺点相关推荐

  1. Java并发知识梳理(上):并发优缺点,线程状态转换,Java内存模型,Synchronized,Volatile,final,并发三特性,Lock与AQS,ReetrandLock

    努力的意义,就是,在以后的日子里,放眼望去全是自己喜欢的人和事! 整个系列文章为Java并发专题,一是自己的兴趣,二是,这部分在实际理解上很有难度,另外在面试过程中也是经常被问到.所以在学习过程中,记 ...

  2. CAS(比较并交换)学习CAS实现原子性+volatile实现可见性,cas与synchronized比较的优缺点

    1.CAS底层原理? 自旋锁(cas思想)+unsafe类,保证原子性靠的是unsafe类 1.首先可以看到: atomicInteger.getAndIncrement(); getAndIncre ...

  3. **Java有哪些悲观锁的实现_面试4连问:乐观锁与悲观锁的概念、实现方式、场景、优缺点?...

    推荐阅读: 数据库面试4连问:分库分表,中间件,优缺点,如何拆分? 终极手撕之架构大全:分布式+框架+微服务+性能优化,够不够? 消息队列面试,你能顶得住面试官这波10大连环炮的攻势吗? 01 乐观锁 ...

  4. Java 并发编程CAS、volatile、synchronized原理详解

    CAS(CompareAndSwap) 什么是CAS? 在Java中调用的是Unsafe的如下方法来CAS修改对象int属性的值(借助C来调用CPU底层指令实现的): /*** * @param o ...

  5. 聊聊这8种单例模式的优缺点

    1.什么是单例模式? 当我们new一个对象时会帮我们申请内存地址,每一次去new的时候都会构建不同的地址,而单例模式就是每次获取的实例化对象都保证是同一份.常见的单例模式有8种写法,每一种单例模式都有 ...

  6. Java 高并发第二阶段实战---高并发设计模式,内存模型,CPU一致性协议,volatile关键字剖析

    第二阶段的课程主要围绕着Volatile关键字,内存重排序,Happen-Before,Cpu一致性协议,高并发下的设计模式以及类加载器几个大的方面展开,下面是内容详细信息,本教程是本人录制,下载地址 ...

  7. IOS单例模式及单例模式的优缺点

    单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. #import <Foundation/Foundation.h&g ...

  8. C语言编程宏定义的优缺点,C语言重要知识点总结(二)--内存结构、函数调用过程(栈帧)、宏的优缺点以及##和#的使用...

    一.内存结构 内存大致可以分为四个部分:代码段,静态存储区,堆,栈. 具体划分如下图所示: 栈:在执行函数时,函数内部局部变量的存储单元都可以在栈上创建,函数执行结束后会自动释放内存.栈内存的分配运算 ...

  9. 乐观锁与悲观锁的概念、实现方式、场景、优缺点?

    01 乐观锁与悲观锁的基本概念 何为乐观锁与悲观锁? 答:乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展.这两种人各有优缺点,不能不以场景而 ...

最新文章

  1. 9076什么意思_9076西南大学人力资源开发与管理答案
  2. oracle取本月最后一天是星期几_Oracle取得本月、本年第一天和最后一天
  3. 铃木uy125摩托车机油_济南铃木安徽发布国四新车—6480元瑞梦125、9380元UY125
  4. 你的博士三五年,不艰辛?
  5. Ubuntu16.04下Neo4j图数据库官网安装部署步骤(图文详解)(博主推荐)
  6. 利用 OpenMP 实现埃拉托斯特尼(Eratosthenes)素数筛法并行化
  7. 在MNIST图像上训练卷积神经网络
  8. UVA10229 Modular Fibonacci 【循环数列】
  9. Visual Studio中View页面与Js页面用快捷键互相跳转
  10. UnicodeEncodeError: #39;ascii#39; codec can#39;t encode character u#39;\u5929#39; in position 2...
  11. mysql 实现row_number_MySQL实现ROW_NUMBER()
  12. iview render设置属性_iView 发布 3.4.0 版本,代号 BestLuck
  13. 预测算法模型(灰色预测和BP神经网络)
  14. codeforces [Gym-100814E]
  15. Java复习第二弹!
  16. MHZ是计算机的什么单位,电脑mhz是什么意思
  17. 人性的弱点 ——戴尔卡耐基(笔记)
  18. unity详细解决visualstudio未能找到类型或命明空间名问题
  19. 北邮计算机学院专业分析,2019-2021北京邮电大学考研数据分析
  20. 如何提高程序员键盘使用效率

热门文章

  1. Zookeeper到底是干嘛的
  2. 百度地图,标注不在中心位置问题
  3. NLP+2vec︱认识多种多样的2vec向量化模型
  4. 嵌入式学习路线与方法
  5. python写出雷霆战机_仿《雷霆战机》飞行射击手游开发--游戏的入口
  6. Al+行业正在聚焦多元化的应用场景 为人工智能发展提供巨大空间
  7. 10款js图片代码_图片滚动代码_图片切换代码_图片特效代码_图片轮播代码(三)
  8. Windows/Mac下 Eclipse中最常用的热键
  9. Python学习4:计算几何形状的表面积与体积
  10. PHP采集器querylist