Java的Volatile关键字的作用

Java的Volatile关键字的作用VolatileVolatile概念是Java特有的。如果你理解它解决的问题,会更容易理解它。如果一个变量,例如一个计数器正在被一个线程使用,有可能计数器的一个副本放在CPU高速缓存里,并且每次修改时,仅修改高速缓存的内容,而不是写到主存。JVM会决定什么时候更新主存。甚至当其他线程从主存里读取计数器的值时,有可能读到过期的值。如果一个变量用volatile修饰,不论一个线程读还是写此变量,总是从主存里读写。作为进一步的保证,当一个写线程写一个volatile修饰的变量时,写线程能看到的所有变

大家好,又见面了,我是你们的朋友全栈君。

Volatile

  • Volatile 概念是Java特有的。如果你理解它解决的问题,会更容易理解它。
  • 如果一个变量,例如一个计数器正在被一个线程使用,有可能计数器的一个副本放在CPU 高速缓存里,并且每次修改时,仅修改高速缓存的内容,而不是写到主存。JVM会决定什么时候更新主存。甚至当其他线程从主存里读取计数器的值时,有可能读到过期的值。
  • 如果一个变量用volatile修饰,不论一个线程读还是写此变量,总是从主存里读写。
  • 作为进一步的保证,当一个写线程写一个volatile修饰的变量时,写线程能看到的所有变量都会和该volatile修饰的变量一起写到主存。相似的,一个读线程读取volatile变量时,能看到的所有变量的最新值。
  • Volatile 起作用是因为为了提升性能,计算硬件的结构有多层的存储。
  • 如果只有一个线程写 volatile 变量,多个读线程进行volatile变量的读操作,仅用volatile修饰就足够了。
  • 如果多个写线程写 volatile 变量,需要synchronized关键字保证写操作的原子性。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145955.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月16日 上午8:40
下一篇 2022年5月16日 上午8:40


相关推荐

  • (转)IIS中防盗链原理

    (转)IIS中防盗链原理转自:http://www.58tt.com/article/system/web/20091125/4882.html 首先笔者要说的是“盗链”很常见的现象,虽然没有采集那么“流行”,但是对于被盗者来说,碰到这事还真的及时解决,要不资源的消耗很可能会影响自身网站的正常运营。那究竟什么是盗链,怎样防止网站的信息被盗链呢?下面简单的说下:“盗链”的定义是:此内容不在自己服务器上,而通过技

    2022年7月23日
    6
  • 理解嵌入式系统中基本的语音算法

    理解嵌入式系统中基本的语音算法转至 https www embedded com print Understandth MindTreeCons February06 2006Anenormo

    2026年3月17日
    1
  • java如何验证手机号码_Java 手机号码正则表达式验证「建议收藏」

    java如何验证手机号码_Java 手机号码正则表达式验证「建议收藏」1.正则表达式的字符串表示StringmobileRegex=”^1(3|4|5|7|8)\\d{9}$”;字符^意义:表示匹配的字符必须在最前边;字符$意义:表示待匹配串的结束位置;字符\d{5,9}意义:\d是数字,{5,9}是5-9位,如果只是验证手机号,且校验的正则表达式如下:/^1[3|5|8][0-9]\d{4,8}$/;不妨写成/^1[3|5|8]\…

    2022年5月20日
    201
  • java 学生信息管理系统

    java 学生信息管理系统只设计了一部分全部的太多了。会慢慢更新增加。学生信息管理包括添加,删除,修改,查询,显示全部等具体结构如图在SQLServer2005数据库上实现数据操作。使用纯面向对象的java语言作为开发语言在sqlserver2005新建一个名为Student的数据库,在下面新建一个名为stu的表当然列名你可以随便写当然要有个学号啊。我的修改等等都是根据学号的

    2022年7月13日
    16
  • ChatGPT“放弃”电商,豆包偏向虎山行

    ChatGPT“放弃”电商,豆包偏向虎山行

    2026年3月13日
    5
  • 终于,我感受到了IDEA的强大[通俗易懂]

    Java开发者千千万,开发者用的开发工具目前主流却只有2种:eclipse和IDEA,我入行以来一直用的eclipse,听过IDEA很好很强大,但是也只是处于听说的阶段,基本没用过,自然没怎么体会过。

    2022年2月16日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号