回过头来看,对于volatile的使用场合有些模糊了
来源:13-5 volatile作用

地球是猿的
2021-10-15
老师好,很早以前写的笔记有些忘了,图中“对volatile的写入操作优先于读操作”是指写操作在读操作之前的意思吧,应该不是优先级的意思吧
volatile int a = 1;
a = 2;
System.out.println(a);
假设线程1执行到第三行,但还没有读取,线程2执行完第二行,此时发生上下文切换,切换到线程1拿到的a的值为1?
写回答
1回答
-
是这样的,这个“优先于”不是指优先级,指的是happens-before,也就是说,如果volatile的写操作先于读操作发生,那么读操作一定能读到写操作的内容。
在你的例子中,System.out.println(a)包含了对a的读操作,那么不会出现线程1执行到第三行,但还没有读取的情况,因为第二行a=2就是读取
012021-10-16
相似问题