给b加了volatile,不仅b被影响,也可以实现轻量级同步
来源:12-15 解决问题

Panda_io
2020-03-26
近朱者赤
给b加了volatile,不仅b被影响,也可以实现轻量级同步
b之前的写入(对应代码b = a)对读取b后的代码( print b )都可见,所以在writerThread里对a的赋值,一定会对readerThread里的读取可见,所以这里的a即使不加volatile ,只要b读到是3 ,就可以由happens-before原则保证了读取到的都是3而不可能读取到1。
老师您这段话可否直接用这个原理推出来
原理:
----happensBofore的传递性:如果hb(A,B)而且hb(B,C),那么可以推出hb(A,C)
单线程规则得出 hb(a,b)
volatile规则得出hb(b,readerTread)
推出:hb(a,readrThread)
写回答
1回答
-
完全正确,这里有一个网址供你参考,讲的就是这件事:https://www.ibm.com/developerworks/library/j-jtp03304/
可以看里面的
New guarantees for volatile
这部分
132021-12-31
相似问题