volatile 关键字
来源:互联网 发布:2016注册淘宝账号步骤 编辑:程序博客网 时间:2024/06/06 02:23
用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最的值。volatile很容易被误用,用来进行原子性操作。
在jvm中,其中有一个内存区域是jvm虚拟机栈,每一个线程运行时都有一个线程栈,线程栈保存了线程运行时候变量值信息。
当线程访问某一个对象时候值的时候,首先通过对象的引用找到对应在堆内存的变量的值,然后把堆内存变量的具体值load到线程本地内存中,建立一个变量副本,
之后线程就不再和对象在堆内存变量值有任何关系,而是直接修改副本变量的值,在修改完之后的某一个时刻(线程退出之前),自动把线程变量副本的值回写到对象在堆中变
量。这样在堆中的对象的值就产生变化了。
实际上volatile并没有完全实现多线程安全,可以使用synchronized代替,但是synchronized开销会更大。
阅读全文
1 0
- volatile关键字
- 关键字volatile
- volatile关键字
- volatile关键字
- volatile关键字
- volatile关键字
- volatile关键字
- volatile关键字
- volatile关键字
- volatile关键字
- volatile关键字
- volatile关键字
- 关键字volatile
- volatile关键字
- volatile关键字
- volatile 关键字
- 关键字 volatile
- volatile关键字
- VS2010与UML
- Android-4.4.2 编译出错 OSError: [Errno 2] No such file or directory
- 编译ncurses错误处理及解决办法
- mysql---多表查询
- html、css、js文件加载顺序及执行情况
- volatile 关键字
- C++例题分析2,复制构造函数
- jdbc Template 介绍和 spring 链接数据源的四种方式
- spring(基础19) 注解@Scope详解
- PowerDesigner中SQL文件、数据库表反向生成PDM
- Python语法第10讲:面向对象之继承
- Python学习中常常遇到的一些问题
- linux文件权限与分组
- 服务器内部转发和请求重定向的区别