近朱者赤
给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)