?3.1.3 加锁和可见性
?3.1.4 volatile 变量? 比 synchronized 更轻量级
(中文翻译的根本看不懂,以下是自己翻译和理解)
? When thread A writes to a volatile variable and subsequently thread B reads that same variable, the values of all variables that were visible to A prior to writing to the volatile variable become visible to B after reading the volatile variable. So from a memory visibility perspective, writing a volatile variable is like exiting a synchronized block and reading a volatile variable is like entering a synchronized block.
-- ps: cpu 的读和写是原子操作的
? thread A对volatile 变量进行写入,随后thread B读取此变量的值,在A写入之前,所有值对A是可见的(即A直接访问的是(进程的)内存,不是自己线程的内存区域),在B读入之后,对B是可见的。所以什 么是内存可见性,写入一个volatile变量 类似 退出一个synchronized block,读入一个 volatile变量 类似 进入一个synchronized block .
退出一个synchronized block,即还没有释放锁,其它线程 读写不了,
进入一个synchronized block,即还没有获得所,线程读不了
?
总结:volatile 原理是使用了CPU读 写的原子性,并强制线程从进程内存中读取,而不是线程自己的内存。
?
?
?
?
?
?
?
?
?
?
?