老师,这样理解volatile对不对

来源:12-14 保证可见的规则

weixin_慕神6429481

2020-04-27

volatile我现在理解是
修改volatile变量时会强制将修改后的值刷新的主内存中。
修改volatile变量后会导致其他线程工作内存中对应的变量值失效。因此,再读取该变量值的时候就需要重新从读取主内存中的值。

但是,是怎么保证的第二个线程就一定能看到第一个线程执行的结果呢,是第二个线程知道某一个线程正在操作这个volatile变量,等待他写入后才会去读取吗,相当于一个轻量级的synchronized吗?

写回答

1回答

悟空

2020-04-27

你理解的是对的。

第二个线程并不是等第一个线程写完后才读取,而是根据具体两个线程的执行时机的先后决定,如果第二个线程先读,那就是还没修改的值,因为第一个线程还没执行。

volatile可以理解为是一个轻量级的synchronized。

0
2
悟空
回复
weixin_慕神6429481
不是,并没有锁住的,对于这个变量的读写,本身就是原子性的
2020-04-27
共2条回复

线程八大核心+Java并发原理及企业级并发解决方案

完整的并发知识网络+丰富的工作内容分享+50余道并发高频面试题

2512 学习 · 939 问题

查看课程