返回信息流原帖地址如下,求高手解决
http://forum.byr.edu.cn/wForum/disparticle.php?boardName=Java&ID=10586&pos=3
这是一条镜像帖。来源:北邮人论坛 / soft-design / #35119同步于 2009/7/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
请教java中的volatile和synchronized
magicfire
2009/7/1镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
【 在 magicfire 的大作中提到: 】
: 原帖地址如下,求高手解决
: http://forum.byr.edu.cn/wForum/disparticle.php?boardName=Java&ID=10586&pos=3
无法过多解释 好好想想多线程的运行过程
可以讲一下volatile和synchronized的意义:
volatile的意思是不确定的 不稳定的 不能保证的
设想当有两个core且具有独立的cache的时候, 当core1的程序修改掉var1的时候,var1的最新值只缓存于core1的cache中,此时core2读取var1的时候拿到的就是旧值
volatile的意义就是告诉编译器生成的代码中不要对var1进行缓存 从而保证一致性
synchronized是java中引入的一种对critical section的简便实现:
设想 两个方法共同对一个变量进行操作的时候 两者之间要避免互相interfere 不然肯定出错 因此需要构建一个critical section 使得每一个方法中的多条操作 “要么不做 要做就给我一气儿做完” synchronized就是干这个的