给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回答

悟空

2020-03-26

完全正确,这里有一个网址供你参考,讲的就是这件事:https://www.ibm.com/developerworks/library/j-jtp03304/

可以看里面的

New guarantees for volatile

这部分

1
3
悟空
回复
风刚才唱歌
这个文档已经被IBM删除了,不过没关系,你看这个提问的内容就可以,内容是一样的。
2021-12-31
共3条回复

线程八大核心+Java并发原理及企业级并发解决方案

完整的并发知识网络+丰富的工作内容分享+50余道并发高频面试题

2512 学习 · 939 问题

查看课程