首页 > 其他分享 >volatile

volatile

时间:2022-11-01 22:12:17浏览次数:46  
标签:变量 发生变化 代码 编译器 volatile 优化

volatile意为易变

加在变量前,告诉编译器这是一个值可能会发生变化的变量,不要进行优化

优化做法是,由于编译器发现两次从i读数据的代码之间的代码没有对i进行过操作,它会自动把上次读的数据放在k中。而不是重新从i里面读

这就造成了如寄存器值之类发生变化但没有体现在代码上的情况下,仍取k中的值则会发生错误

 

参考:https://blog.csdn.net/msrgr/article/details/85321293

标签:变量,发生变化,代码,编译器,volatile,优化
From: https://www.cnblogs.com/toriyung/p/16849352.html

相关文章

  • 深度剖析Java的volatile实现原理,再也不怕面试官问了
    上篇文章我们讲了synchronized的用法和实现原理,我们总爱说synchronized是重量级锁,volatile是轻量级锁。为什么volatile是轻量级锁,体现在哪些方面?以及volatile的作用和实现......
  • 既然CPU有缓存一致性协议(MESI),为什么JMM还需要volatile关键字?
    ​​既然CPU有缓存一致性协议(MESI),为什么JMM还需要volatile关键字?​​​​MESI缓存一致性协议在哪里以及如何实现?​​​​Intel®64andIA-32ArchitecturesDeveloper’s......
  • Volatile关键字的作用
    Volatile关键字的作用主要有如下两个:1.线程的可见性:当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。顺序一致性:禁止指令重排序。一、线程可见性我们先通过一......
  • Java - synchronized 和 volatile
    1.两者均可以实现可见性(线程B可以读到线程A更新的最新值)2.volatile本质就是告诉JVM,当前变量在寄存器中的值不确定,需要从主存中读取。synchronized锁定了当前变量,只有......
  • c语言关键字(c语言关键字volatile)
    什么是C语言关键字关键字又称保留字,是c语言预定义的单词,在程序中有不同的使用目的,在定义标识符的时候,不能使用这些关键字,否则在编译时会产生莫名其妙的错误,C语言由ANSI定义......
  • java并发之volatile
    java并发围绕原子性、可见性和有序性展开。volatile可以保证可见性。在说volatile前,需要了解几个概念。1、JMM(javamemorymodel)JMM是个抽象的概念,他是java对底层操作系......
  • 深入理解 volatile 关键字
    volatile关键字是Java语言的高级特性,但要弄清楚其工作原理,需要先弄懂Java内存模型。如果你之前没了解过Java内存模型,那可以先看看之前我写过的一篇「深入理解Java......
  • 深度剖析Java的volatile实现原理,再也不怕面试官问了
    1\.volatile是什么?volatile是Java提供的一种轻量级的同步机制。与synchronized修饰方法、代码块不同,volatile只用来修饰变量。并且与synchronized、ReentrantLock等重量级......
  • 从双重校验锁进一步理解synchronized和volatile
    并发编程中的四个问题:可见性、原子性、有序性、指令重排对于synchronized和volatile首先我们知道:synchronized可以保证原子性、有序性、可见性;volatile只能保证有序性......
  • Volatile的解析
    volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下与......