volatile关键字
volatile关键字
volatile关键字的主要作用是使变量在多个线程间可见
一个线程可以执行的操作有使用(use)、赋值(assign)、装载(load)、存储(store)、锁定(lock)、解锁(unlock)。
而主内存可以执行的操作有读(read)、写(write)、锁定(lock)、解锁(unlock),每个操作都是原子的。
volatile的作用就是强制线程到主内存(共享内存)里去读取变量,而不是去线程工作内存区里去读取,从而实现了多个线程间的变量可见。也就满足线程安全的可见性
volatile只具备可见性,不具备原子性
如果需要具备原子性,建议使用atomic类的系列对象,支持原子操作
(atomic类只保证本身方法原子性,并不保证多次操作的原子性)
volatile用于只针对于多个线程可见的变量操作,并不能代替synchronized的同步性
本文由作者按照 CC BY 4.0 进行授权
