Java并发:Java内存模型(四)

这里接着讲的内存语义

5. 锁的内存语义

       众所周知,锁可以让临界区互斥行。里将介绍锁的另一个同重要,但常常被忽的功能:锁的内存语义。

   5.1 锁的释放和获取的内存语义

      当线锁时JMM会把该线对应的本地内存中的共享量刷新到主内存中。以上面的MonitorExample程序例,A线后,共享数据的状示意3-25所示。

                                

       当线锁时JMM会把该线对应的本地内存置无效。从而使得被监视器保的临界区代从主内存中取共享量。3-26锁获取的状示意图。                                                                                                                                                                                   

        对比锁释-取的内存语义volatile-的内存语义可以看出:锁释放与volatile写有相同的内存语义锁获取与volatile有相同的内存语义

     下面对锁释放和锁获取的内存语义做个总结

           ·线A放一个实质上是线A向接下来将要的某个线出了(线A对共享量所做修改的)消息。

           ·线B取一个实质上是线B接收了之前某个线出的(在之前共享变量所做修改的)消息。

           ·线A,随后线B实质上是线A主内存向线B发送消息。

  锁内存的语义实现这里就不细说了,锁释放-取的内存语义实现至少有下面两种方式(感兴趣的自己找资料看看)。

       1)利用volatile量的写-所具有的内存语义

       2)利用CAS所附volatilevolatile写的内存语义

6. final域的内存语义

    待补充。。。。。。。。。(想写了再写吧)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值