Lmxy1990 ' Blog

java volatile 关键字


volatile关键字的使用


  • volatile关键字的作用是告诉编译器,该变量是易变的.不要将该变量的值存储在寄存器中,而是放在内存中(一般指的是静态也就是栈).
  • 某些静态变量,如果使用频繁.可能会直接存放于寄存器中,以便加快计算的速度.但是,如果我们期望该值不应 该存在多个不一样的值时候,除了使用final定义为常量.还可以使用该关键字.
  • 该关键字既可以避免一个变量出现多个值的可能,也可以避免常量的不可改变性.


注意点:

  • 使用场景应该如下:
    • 多个线程中,该变量只能拥有一个对象.
    • 该变量可能需要变化.即该变量需要动态创建/销毁.
    • 它本身无法保证运行中只存在一个对象.它只是告诉jvm,
      它的值需要从内存中去读取,而不是在寄存器(1级缓存/2级缓存/3级缓存)中获取该值.
  • 如果只是需要一个对象,使用final关键字即可.如果该对象使用不频繁,减少内存开销.可以使用该关键字,配合多线程的同步锁,可以实现单例.

End
坚持原创技术分享,您的支持将鼓励我继续创作!