`

volatile变量的特性

    博客分类:
  • java
阅读更多

1.保证次变量对所有线程的可见性,这里的“可见性”是指当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。

2.禁止指令重排优化,普通的变量仅仅会保证在该方法的执行过程中所有依赖赋值结果的地方都获取得到正确的结果,而不能保证变量赋值的顺序与程序代码中的执行顺序一致。

分享到:
评论

相关推荐

    面试官最爱的volatile关键字.docx

    volatile可以看成是synchronized的一种轻量级的实现,但volatile并不能完全代替synchronized,volatile有synchronized可见性的特性,但没有synchronized原子性的特性。 可见性即用volatile关键字修饰的成员变量表明...

    深入理解Java内存模型??volatile

    理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码: class VolatileFeaturesExample { ...

    并发编程基础知识,java内存模型及多线程、volatile

    动 当我们使⽤volatile去申明变量时,就等于告诉了虚拟机,这个变量极有可能会被某些程序或者线程 修改。为了确保这个变量被修改后,应⽤程序范围内的所有线程都能够“看到”这个改动,虚拟机就 必须采⽤⼀些特殊的...

    [Java] volatile 详详解!

    要真正搞懂volatile的特性需要与JMM对比来看 JMM(线程安全的保证) JMM:JAVA内存模型(java memory model) 是一种抽象概念,并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(实例...

    解开Volatile的面纱V1.1

    即当一条线程修改了这个变量的值,新值 对于其他线程来说是可以立即得知的。 3. 有序性:为了提高程序的执行性能,编辑器和处理器都有可能会对程序中的指令进行重排序。 无论是在面试时,还是在实际开发中,高并发...

    c语言入门教程.txt

    从表面字意上也可以看出,关键字是C语言本身某些特性的一个表示,是唯一的代表某一个意思的。 下面列出ANSI标准定义的32个C语言的关键字,这些关键字在以后的学习中基本上都会用到,到时再说它们的各自用法。 auto ...

    涵盖了90%以上的面试题

    介绍一下volatile jdk1.5新特性 jdk1.7新特性 jdk1.8新特性 java语言有哪些优点? 同一个.java文件中是否可以有多个main方法 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 如何在main方法执行...

    JAVA实现Modbus RTU或Modbus TCPIP数据采集.rar

    3.java同步的几种方式:synchronized,volatile,显示锁,原子变量,线程及对象的基础同步方法。 4.所谓线程安全就是当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在...

    java8集合源码-Java:Java

    Java中的transient和volatile变量有什么区别? 提及同步块的用途 基于散列的集合中加载因子的默认大小是多少? 编写代码使集合只读? 区分谓词和函数? Java8中的Nashorn是什么? JVM 分配了多少种内存区域? 定义为...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    对象的使用包括引用对象的成员变量和方法,通过运算符·可以实现对变量的访问和方法的调 用,变量和方法可以通过设定一定的访问权限(见下面的例子)来允许或禁止其它对象对它的 访问。 我们先定义一个类 Point。 例子...

    Objective-C2.0程序设计

    10.3.3 volatile 10.4 枚举数据类型 10.5 typedef语句 10.6 数据类型转换 10.6.1 转换规则 10.6.2 符号扩展 10.7 练习 第11章 分类和协议 11.1 分类 11.2 协议 11.3 合成对象 11.4 练习 第12章 预处理程序 12.1 #...

    嵌入式系统编程修炼之道

    5.关键字volatile 6.CPU字长与存储器位宽不一致处理 总结 C语言嵌入式系统编程修炼之道——屏幕操作篇 1.汉字处理 2.系统时间显示 3.动画显示 4.菜单操作 5.模拟MessageBox函数 总结 C语言嵌入式系统编程修炼之道...

    Java开发常见问题总结.docx

    明确初始化变量,避免产生未定义行为。 遵循“早初始化,晚赋值”原则。 面向对象设计: 尽量使类具有高内聚低耦合特性。 优先考虑接口而不是实现,利用多态性。 适当使用设计模式提升代码复用和可维护性。 集合与...

    深入理解_Java_虚拟机 JVM_高级特性与最佳实践

    / 316 12.1 概述 / 316 12.2 硬件的效率与一致性 / 317 12.3 Java内存模型 / 318 12.3.1 主内存与工作内存 / 319 12.3.2 内存间交互操作 / 320 12.3.3 对于volatile型变量的特殊规则 / 322 12.3.4 对于long和...

    java面试800题

    volatile:volatile变量表示保证它必须是与主内存保持一致,它实际是""变量的同步"", 也就是说对于volatile变量的操作是原子型的,如用在long 或 double变量前,一般用于多线程编程。 abstract:抽象,必须重载,修饰...

    jdk-14_linux-x64_bin.rpm

    改进 NullPointerExceptions,通过准确描述哪些变量为 null 来提高 JVM 生成的异常的可用性。该提案的作者希望为开发人员和支持人员提供有关程序为何异常终止的有用信息,并通过更清楚地将动态异常与静态程序代码相...

    酒评

    它包含6497个观测值和12个变量。 葡萄酒的quality将作为回应。 预测因素包括color (1599红色,4898白色)和葡萄酒理化特性的客观测量,例如fixed acidity , citric acid , pH和alcohol 。 fixed acidity ...

    嵌入式系统/ARM技术中的在嵌入式软件编程中深入理解关键字

    C语言以其简洁、高效和强大等特性成为嵌入式软件编程的首选语言,但是某些关键字,例如const、static、extern和volatile等,在不同的场合具有不同的含义,而且某些用法晦涩难懂,为此本文详细介绍这些关键字的用法...

    宋劲彬的嵌入式C语言一站式编程

    4. 全局变量、局部变量和作用域 4. 分支语句 1. if语句 2. if/else语句 3. 布尔代数 4. switch语句 5. 深入理解函数 1. return语句 2. 增量式开发 3. 递归 6. 循环语句 1. while语句 2. do/while语句 3. for语句 4. ...

Global site tag (gtag.js) - Google Analytics