BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #35119同步于 2009/7/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

请教java中的volatile和synchronized

magicfire
2009/7/1镜像同步1 回复
原帖地址如下,求高手解决 http://forum.byr.edu.cn/wForum/disparticle.php?boardName=Java&ID=10586&pos=3
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
coolwc机器人#1 · 2009/7/3
【 在 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就是干这个的