请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,这样理解volatile对不对

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

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

正在回答 回答被采纳积分+3

1回答

悟空 2020-04-27 11:09:14

你理解的是对的。

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

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

0 回复 有任何疑惑可以回复我~
  • 提问者 weixin_慕神6429481 #1
    好的老师,也就是说某个线程在读或写的时候是锁住这个变量的,操作完成后才会释放锁,然后其他线程再从主存内读,就大概实现了volatile这么一个功能吗
    回复 有任何疑惑可以回复我~ 2020-04-27 14:08:50
  • 悟空 回复 提问者 weixin_慕神6429481 #2
    不是,并没有锁住的,对于这个变量的读写,本身就是原子性的
    回复 有任何疑惑可以回复我~ 2020-04-27 14:36:01
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信