文章

volatile关键字

volatile关键字

volatile关键字的主要作用是使变量在多个线程间可见

一个线程可以执行的操作有使用(use)、赋值(assign)、装载(load)、存储(store)、锁定(lock)、解锁(unlock)。

而主内存可以执行的操作有读(read)、写(write)、锁定(lock)、解锁(unlock),每个操作都是原子的。

volatile的作用就是强制线程到主内存(共享内存)里去读取变量,而不是去线程工作内存区里去读取,从而实现了多个线程间的变量可见。也就满足线程安全的可见性

volatile只具备可见性,不具备原子性

如果需要具备原子性,建议使用atomic类的系列对象,支持原子操作

(atomic类只保证本身方法原子性,并不保证多次操作的原子性)

volatile用于只针对于多个线程可见的变量操作,并不能代替synchronized的同步性

本文由作者按照 CC BY 4.0 进行授权