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

关于Volatile关键字的一点个人理解

阅读更多

          

volatile的特性:

    当我们声明共享变量为volatile后,该变量的更新将会对其他线程具有内存可见性,本质就是通过线程间这种数据更新通知来实现数据同步,而传统的做法通过加锁的方式来实现数据同步,但由于锁的性能损耗太大,所以有了通过volaitle关键字来通过无锁的方式来达到同样的目的.OK,扯了半天废话,直接上我画的草图吧,各位看官如果觉得我哪里说的不妥,请下方留言指正,谢谢!

     结束语:Volatile关键字只保证单一操作的多线程之间内存可见性,但如果读和写等多个操作混杂在一起,则他们之间的内存可见性不做保证,这取决于操作系统环境和JVM实现.一般建议Volatile用于单一的写操作比如赋值操作,像累加操作就不适合用Volatile.是不是包含多个操作这不能单单看代码行数,可能一句代码但底层暗含了多步操作,比如XXXX xx = new XXXX()操作,就至少暗含了new操作(即内存空间分配操作)和等号=赋值操作.

 

  • 大小: 676.5 KB
2
2
分享到:
评论
2 楼 lxwt909 2015-11-09  
cywhoyi 写道
happen-before
发现写blog还能这么搞

哈哈
1 楼 cywhoyi 2015-11-09  
happen-before
发现写blog还能这么搞

相关推荐

    java volatile 关键字实战

    java volatile 关键字实战java volatile 关键字实战java volatile 关键字实战java volatile 关键字实战java volatile 关键字实战java volatile 关键字实战java volatile 关键字实战java volatile 关键字实战java ...

    Java并发编程:volatile关键字解析

    在深入了解`volatile`关键字之前,我们首先需要理解计算机内存模型的一些基本概念。在现代计算机系统中,CPU为了提高执行效率,会将频繁访问的数据从较慢的主存复制到更快的CPU缓存中。这种做法虽然提高了性能,但也...

    深入解析Java中的volatile关键字:原理、应用与实践

    在Java并发编程中,volatile关键字是一种轻量级的同步机制,它用于确保变量的可见性和有序性。本文将详细探讨volatile关键字的...通过理解volatile的工作原理和使用场景,开发者可以编写出更加健壮和高效的并发程序。

    详解C中volatile关键字

    详解C中volatile关键字 volatile关键字是C语言中一个重要的关键字,它对变量的声明在不同编译环境下可能造成不同的结果。volatile关键字的作用是提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序...

    深入理解 volatile 关键字.doc

    深入理解volatile关键字 volatile关键字是Java语言的高级特性,它可以保证可见性和禁止指令重排序,但是要弄清楚其工作原理,需要先弄懂Java内存模型。 保证可见性 volatile关键字可以保证可见性,即当一个线程...

    关于volatile关键字的说明以及测试

    volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如 操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行 优化,从而可以提供...

    C++中volatile关键字及常见的误解总结

    C++中volatile关键字及常见的误解总结 C++中的volatile关键字是一种类型修饰符,用来修饰变量,表示该变量可以被某些编译器未知的因素更改,...正确地理解volatile关键字的作用,可以帮助开发者编写更加可靠的程序。

    java里的volatile关键字详解

    "Java中的Volatile关键字详解" Java中的Volatile关键字详解是Java中的一种关键字,用于保证线程之间的可见性、原子性和有序性。下面是对Java中的Volatile关键字详解的知识点总结: 一、基本概念 1. 可见性:可见...

    java volatile 关键字 学习

    java volatile 关键字 学习

    深入多线程之:内存栅栏与volatile关键字的使用分析

    以前我们说过在一些简单的例子中,比如为一个字段赋值或递增该字段,我们需要对线程进行同步,虽然lock可以满足我们的需要,但是一个竞争锁一定会导致阻塞,然后忍受线程上下文切换和调度的开销,在一些高并发和性能...

    4.4 volatile关键字有什么作用?.rar

    在IT行业中,volatile关键字在编程,尤其是嵌入式系统和多线程编程中扮演着重要的角色。本篇文章将深入探讨volatile关键字的作用,并结合GD32F303单片机的使用场景,来阐述它在实际开发中的应用。 首先,volatile...

    Java中volatile关键字实现原理

    Java中volatile关键字实现原理 volatile关键字是Java语言中的一种机制,用于保证变量在多线程之间的可见性。它是Java.util.concurrent包的核心,没有volatile就没有那么多的并发类供我们使用。本文详细解读一下...

    Java并发volatile关键字.docx

    在深入理解volatile的关键特性之前,我们需要先了解Java内存模型(JMM,Java Memory Model)的基本概念。 JMM规定,每个线程都有自己的工作内存,用于存储从主内存中复制的共享变量副本。线程执行运算时是基于工作...

    Java线程:volatile关键字

    Java 线程 volatile 关键字详解 Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。volatile 变量的同步性较差,但它有时更简单并且开销更低。volatile 变量可以被看作是一种 “程度较轻的 ...

    AVR-GCC 中如何使用volatile 关键字.pdf

    在嵌入式系统开发中,特别是在使用AVR-GCC编译器时,正确理解并使用 `volatile` 关键字是非常重要的。 #### 2. `volatile` 在多任务与中断环境中的应用 当涉及到多任务处理或中断服务例程(ISR)时,`volatile` ...

    volatile关键字使用

    `volatile`关键字是C++和Java等编程语言中用于处理多线程环境或者与硬件交互时的一个关键特性。它主要用于修饰变量,表明该变量的值可能会在编译器不知情的情况下发生变化,例如由其他线程修改、外部硬件事件影响...

    volatile关键字 Const关键字 static关键字 mutable 关键字

    在C/C++编程语言中,`volatile`, `const`, `static` 和 `mutable` 是...理解和正确使用这些关键字能帮助我们编写更安全、更高效、更具维护性的代码。在实际编程中,应根据具体需求选择合适的关键字,以实现预期的功能。

    一文精通Java中的volatile关键字

    Java中的`volatile`关键字是多线程编程中的一个重要概念,它的主要作用是确保共享变量的可见性和禁止指令重排序。...在设计并发程序时,理解`volatile`的工作原理和限制,有助于编写出更加高效且线程安全的代码。

    关于C语言中volatile关键字

    精确地说就是,遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问;如果不使用valatile,则编译器将对所声明的语句进行优化。(简洁的说就是:volatile关键词...

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

    在Java编程中,volatile关键字是一个至关重要的概念,尤其在多线程环境下,理解并正确使用volatile是面试时必不可少的知识点。volatile被视为synchronized的一种轻量级实现,但两者在特性上存在显著差异。 首先,...

Global site tag (gtag.js) - Google Analytics