精华帖 (1) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (2)
|
|
---|---|
作者 | 正文 |
发表时间:2012-09-24
“线程A的lock操作 能看见 线程B对同一个对象unlock操作之前的 所有修改。注意:不只是 线程B在 synchronized块中所作的修改,还包含 线程B在进入synchronized之前的所有修改 也都能看到” http://www.iteye.com/topic/875420 在讲述DCL时,里面的情形四 清楚的谈到了这种情况。这里单独开个帖列出来。 这样,synchronized就有了三个作用 1、作为互斥锁使用(synchronized所持有的锁,同一个时刻只能由一个线程所占有) 2、对于同步块内部访问到的数据,进入前和出来后,强制cache和main memory进行同步 3、线程A的lock操作 能看见 线程B对同一个对象unlock操作之前的 所有修改 下面这张图,上部分截取自 JSR-133,下部分截取自 JEREMY MANSON(JSR-133作者之一)的一次讲课(http://www.youtube.com/watch?v=WTVooKLLVT8&feature=g-wl,需梯子) 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-09-25
怎么感觉像BUG一样?
|
|
返回顶楼 | |
发表时间:2012-09-25
姑苏痴情 写道 怎么感觉像BUG一样?
不是bug,这是 happen-before 原则推断的结果 |
|
返回顶楼 | |
发表时间:2012-09-25
<<java 并发编程实战>> 不多说了.
|
|
返回顶楼 | |
发表时间:2012-09-25
冰冷缠绵 写道 <<java 并发编程实战>> 不多说了.
这种回帖总是让我诚惶诚恐、胆战心惊。 你指的的是哪个章节?能否明确下,这样我们没看过的也可以查阅下嘛 |
|
返回顶楼 | |
发表时间:2012-09-25
好像看过。。。在哪本书看过
|
|
返回顶楼 | |
发表时间:2012-09-25
锁一个对象, 并操作这个对象, 就这么简单, 为啥叫 第三作用呢。
|
|
返回顶楼 | |
发表时间:2012-09-25
这是java内存模型的内容了,没什么稀奇的
|
|
返回顶楼 | |
发表时间:2012-09-25
刚刚测试了下,无论是a还是b
r2都是正确的,未出现预料外情况,都是1 ubuntu 10.10 64bit jdk7u7 64bit |
|
返回顶楼 | |
发表时间:2012-09-25
E~~楼主不是我当年的幼稚园大大班班长吗? 怎么跑这来了。
|
|
返回顶楼 | |