Java的Volatile关键字的作用

本文深入讲解Java中Volatile的概念及工作原理,解释了如何通过Volatile确保多线程环境下变量的可见性和一致性,同时探讨了Volatile与synchronized关键字的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Volatile

  • Volatile 概念是Java特有的。如果你理解它解决的问题,会更容易理解它。
  • 如果一个变量,例如一个计数器正在被一个线程使用,有可能计数器的一个副本放在CPU 高速缓存里,并且每次修改时,仅修改高速缓存的内容,而不是写到主存。JVM会决定什么时候更新主存。甚至当其他线程从主存里读取计数器的值时,有可能读到过期的值。
  • 如果一个变量用volatile修饰,不论一个线程读还是写此变量,总是从主存里读写。
  • 作为进一步的保证,当一个写线程写一个volatile修饰的变量时,写线程能看到的所有变量都会和该volatile修饰的变量一起写到主存。相似的,一个读线程读取volatile变量时,能看到的所有变量的最新值。
  • Volatile 起作用是因为为了提升性能,计算硬件的结构有多层的存储。
  • 如果只有一个线程写 volatile 变量,多个读线程进行volatile变量的读操作,仅用volatile修饰就足够了。
  • 如果多个写线程写 volatile 变量,需要synchronized关键字保证写操作的原子性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值