采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
volatile我现在理解是 修改volatile变量时会强制将修改后的值刷新的主内存中。 修改volatile变量后会导致其他线程工作内存中对应的变量值失效。因此,再读取该变量值的时候就需要重新从读取主内存中的值。
但是,是怎么保证的第二个线程就一定能看到第一个线程执行的结果呢,是第二个线程知道某一个线程正在操作这个volatile变量,等待他写入后才会去读取吗,相当于一个轻量级的synchronized吗?
你理解的是对的。
第二个线程并不是等第一个线程写完后才读取,而是根据具体两个线程的执行时机的先后决定,如果第二个线程先读,那就是还没修改的值,因为第一个线程还没执行。
volatile可以理解为是一个轻量级的synchronized。
好的老师,也就是说某个线程在读或写的时候是锁住这个变量的,操作完成后才会释放锁,然后其他线程再从主存内读,就大概实现了volatile这么一个功能吗
不是,并没有锁住的,对于这个变量的读写,本身就是原子性的
登录后可查看更多问答,登录/注册
完整的并发知识网络+丰富的工作内容分享+50余道并发高频面试题
1.9k 26
890 12
1.1k 12
2.5k 12
1.1k 11