大家好,又见面了,我是你们的朋友全栈君。
Volatile
- Volatile 概念是Java特有的。如果你理解它解决的问题,会更容易理解它。
- 如果一个变量,例如一个计数器正在被一个线程使用,有可能计数器的一个副本放在CPU 高速缓存里,并且每次修改时,仅修改高速缓存的内容,而不是写到主存。JVM会决定什么时候更新主存。甚至当其他线程从主存里读取计数器的值时,有可能读到过期的值。
- 如果一个变量用volatile修饰,不论一个线程读还是写此变量,总是从主存里读写。
- 作为进一步的保证,当一个写线程写一个volatile修饰的变量时,写线程能看到的所有变量都会和该volatile修饰的变量一起写到主存。相似的,一个读线程读取volatile变量时,能看到的所有变量的最新值。
- Volatile 起作用是因为为了提升性能,计算硬件的结构有多层的存储。
- 如果只有一个线程写 volatile 变量,多个读线程进行volatile变量的读操作,仅用volatile修饰就足够了。
- 如果多个写线程写 volatile 变量,需要
synchronized
关键字保证写操作的原子性。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/145955.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...