📅  最后修改于: 2023-12-03 15:16:30.616000             🧑  作者: Mango
volatile
关键字volatile
是 Java 中一个关键字,用于声明变量。它可以确保多线程之间的可见性,即各个线程之间总是能够看到共享变量的最新值。
volatile
在多线程环境下,由于运行时系统的优化,每个线程可能会在自己的线程缓存中保存一份共享变量的拷贝,这样就可能会导致各个线程之间的共享变量不一致。如果想要确保线程之间可以看到共享变量的最新值,就需要使用volatile
。
volatile
的特性使用volatile
声明的变量有以下特性:
volatile
只能保证对单次读/写的原子性,无法保证多次操作的原子性,如i++
;volatile
定义volatile
变量很简单,只需要在变量声明前面加上volatile
关键字即可:
public class VolatileDemo {
private volatile int counter = 0;
// ...
}
volatile
一般用于状态标记、双重检查锁定(DCL)、计数器等场景,可以有效地保证多线程环境下的正确性。
volatile
变量进行复合操作,如counter++
或counter += 1
,这些操作并不能保证原子性,需要使用AtomicInteger
等原子类实现;volatile
关键字,它并不能保证所有的线程操作都是原子性的,需要使用synchronized
互斥锁等机制保证线程安全。volatile
关键字是 Java 语言中保证多线程可见性的重要机制,能够有效避免多个线程之间对共享变量的不一致问题,但是在使用时需要注意其特性和注意事项。