synchronized的第三个作用。估计80%的Java开发者都不知道

各位 Java 开发者,synchronized 竟然还有这作用,作 Java 开发的有多少人知道(今天刚刚知道的)。发出来给大家看看:

[b]“线程A的lock操作 能看见 线程B对同一个对象unlock操作之前的 [color=red]所有修改[/color]。注意:不只是 线程B在 synchronized块中所作的修改,还包含 线程B在进入synchronized之前的所有修改 也都能看到”[/b]

[url]http://www.iteye.com/topic/875420[/url] 在讲述DCL时,里面的情形四 清楚的谈到了这种情况。这里单独开个帖列出来。

这样,synchronized就有了三个作用
1、作为互斥锁使用(synchronized所持有的锁,同一个时刻只能由一个线程所占有)
2、对于同步块内部访问到的数据,进入前和出来后,强制cache和main memory进行同步
3、线程A的lock操作 能看见 线程B对同一个对象unlock操作之前的 [b][color=red]所有修改[/color][/b]

下面这张图,上部分截取自 JSR-133,下部分截取自 JEREMY MANSON(JSR-133作者之一)的一次讲课([url]http://www.youtube.com/watch?v=WTVooKLLVT8&feature=g-wl[/url],需梯子)

[img]http://dl.iteye.com/upload/attachment/0074/2865/77cf6559-4e5a-3afa-9f72-0faa0381640c.png[/img]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值