`
trix
  • 浏览: 84834 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

新手资料Volatile

 
阅读更多

Volatile修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。 

Java语言规范中指出:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比。 

这样当多个线程同时与某个对象交互时,就必须要注意到要让线程及时的得到共享成员变量的变化。 

而volatile关键字就是提示VM:对于这个成员变量不能保存它的私有拷贝,而应直接与共享成员变量交互。 

使用建议:在两个或者更多的线程访问的成员变量上使用volatile。当要访问的变量已在synchronized代码块中,或者为常量时,不必使用。 

由于使用volatile屏蔽掉了VM中必要的代码优化,所以在效率上比较低,因此一定在必要时才使用此关键字。

分享到:
评论

相关推荐

    AVR熔丝位与volatile

    内容是讲解关于AVR熔丝位与其锁死 、解...volatile的应用。新手不容错过! --------------------------------- 声明:所讲内容是本人网上、书上(特别是马潮老师的书)收集与整理并通过实验得来,仅用于学习并非原创!

    新手如何入门嵌入式软件开发.doc

    本文将从硬件和软件两个方面对嵌入式软件开发的基本知识和技能进行讲解,并提供了大量的参考资料和网站,以帮助新手快速入门嵌入式软件开发。 一、硬件基础知识 1.1 处理器的体系结构 * 微机原理 * 单片机 * ...

    新手学习C++入门资料

    volatile const protected this wchar_t const_cast public throw friend true reinterpret_cast try bitor xor_e and_eq compl or_eq not_eq bitand 在C++中还增加了bool型变量和wchar_t型变量: 布尔型...

    從新手到高手C++全方位學習

    《從新手到高手C++全方位學習》適合於從未學習過任何編程語言的新手,以及學習C++多年,仍舊不能融會貫通的讀者,對於正在使用C++進行開發的程序員也有很好的參考價值。 光盤提供的視頻教程,包含了第1章到第17章...

    Java项目新手练习小项目

    3. 线程同步:为了避免多线程环境下的数据不一致性,Java提供了synchronized关键字、Lock接口(如ReentrantLock)以及volatile关键字来实现线程间的同步和通信。 二、Java线程控制 1. 线程调度:Java的线程调度...

    新手入门必备java开发规范

    这份手册涵盖了命名规则、代码结构、异常处理、并发控制等多个方面,对于新手和有经验的程序员来说,都是一个极好的学习资源。 1. **命名规范**:这是编写清晰代码的第一步。阿里巴巴的规约手册中规定了类名、方法...

    jvm_jvm新手_jvm_

    作为新手,了解JVM的工作原理和优化技巧是成为熟练Java开发者的重要步骤。以下是一些关于JVM的关键知识点: 1. **内存区域**: - **堆内存**:所有对象实例都在堆中分配内存,是JVM最大的内存区域,进行垃圾回收的...

    java关键字,适合新手的ppt

    对于新手来说,理解Java的关键字是非常重要的一步,因为它们构成了语言的基础并指导了代码的结构和行为。 Java的关键字是被语言本身保留的词汇,它们有特定的含义和功能。例如,`byte`, `short`, `int`, `long`, `...

    stm32入门学习资料

    ### STM32入门学习资料详解 #### 一、引言 STM32是STMicroelectronics公司推出的一款基于ARM Cortex-M内核的32位微控制器系列。...希望本文能够为那些正准备踏入STM32世界的新手提供一份有用的指南。

    C++新手笔记

    根据给定的文件信息,以下是对“C++新手笔记”中关键知识点的详细解析: ### 经验之谈 在程序数组使用中,指标(索引)的处理必须格外小心,因为错误的索引可能会导致越界访问,进而引发运行时错误或程序崩溃。 ...

    java学习资料总结

    这可能是作者对于Java多线程学习的一些建议和经验分享,对于新手来说,这部分内容能够帮助他们建立起正确的学习框架和预期。 "Java并行程序基础"章节是入门的关键,它可能会涵盖线程的基本概念,如线程的创建、启动...

    Java虚拟机学习资料

    以下是对"深入理解Java虚拟机学习资料"的详细解析: 一、JVM概述 Java虚拟机是Java平台的核心组成部分,它负责加载、验证、执行Java字节码,并管理内存。JVM的设计目标是实现“一次编写,到处运行”。通过JVM,Java...

    msp430对刚接触的人来说很好资料

    volatile unsigned int i; P1OUT ^= 0x01; // 使用异或操作翻转P1.0的状态 i = 50000; // 延迟 while (i--); } } ``` **3. 编译项目** - 点击工具栏上的“Make”按钮。 - 如果一切顺利,将提示编译成功。 ##...

    PyPI 官网下载 | volatility3-2.0.0.tar.gz

    Volatility3拥有活跃的开发者社区,不断更新和改进工具,提供丰富的教程和案例,使得新手也能快速上手。 7. **编译与安装**: 解压`volatility3-2.0.0.tar.gz`后,用户需要遵循Python项目的标准构建流程,如使用`...

    中文文章(JAVA).rar

    这份压缩包中的中文文章,无疑为JAVA学习者提供了一个全面且深入的学习路径,无论你是初涉JAVA的新手,还是寻求提升的开发者,都能从中受益。通过系统地学习和实践,可以有效地提高JAVA编程技能,更好地应对实际开发...

    java程序设计书籍

    Java语言是目前世界上最受欢迎的编程语言之一,尤其在企业级应用开发中占据主导地位。针对初学者和进阶者,本书“Java程序...无论你是初入编程殿堂的新手,还是寻求提升的开发者,这本书都将是你不可或缺的参考资料。

    良葛格java学习笔记

    【良葛格java学习笔记】是一份专为新手设计的Java编程学习资料,旨在帮助初学者从零开始了解和掌握Java这门强大的编程语言。Java以其跨平台、面向对象、安全性和高性能等特性,广泛应用于互联网后端开发、移动应用...

    JAVA 课件(pdf版的)

    Java是一种广泛使用的面向对象的编程语言,以其跨平台...无论你是编程新手还是希望深入Java的开发者,这份课件都将是你宝贵的参考资料。通过系统的学习和实践,你将能够熟练地运用Java进行软件开发,开启你的编程之旅。

    Java核心技术 卷I 基础知识 (第10版)英文高清完整.pdf版下载

    书中会详细介绍线程的创建和同步,以及Java提供的并发工具,如synchronized关键字、volatile变量、ThreadLocal和java.util.concurrent包中的高级工具。 最后,基础数据结构和算法也会在书中有所涉及,它们是优化...

Global site tag (gtag.js) - Google Analytics