美文网首页
【读书笔记】Java并发机制的底层实现原理

【读书笔记】Java并发机制的底层实现原理

作者: 程序员驿站 | 来源:发表于2018-01-13 00:27 被阅读23次

    温习《Java并发编程的艺术》

    volatile

    定义

    轻量级的synchonized

    在多处理器开发保证了共享变了的可见性(一个线程修改了一个共享变了,另外一个线程能够读取这个修改的值)

    实现原理

    Lock前缀指令会引起处理器缓存回写到内存

    一个处理器的缓存回到内存会导致其他处理器的缓存无效

    目的

    准确和一致地更新共享变量

    使用优化

    • 追加字节能优化性能

    • 为什么追加64字节能够提高并发编程的效率呢

    • 在下面两种情况不应该是用64字节
      缓存行非64字节宽的处理器
      缓存变量不会被频繁地写

    synchronized

    定义

    作用

    • 对于普通同步形式,锁是当前实例对象

    • 对于静态同步方法,锁是当前Class对象

    • 对于同步方法块,锁是synchonized括号里配置的对象

    实现原理

    jvm基于进入和退出Monitor对象来实现方法同步和代码同步

    使用monitorenter和monitorexit指令实现,在编译后插入到插入代码

    头对象

    synchonized用的锁是存在java对象头里的,数组用3个字宽存储对象头,非数组用2个字宽存储对象头

    Markword 默认存储对象的Hashcode、分代年龄、锁标记位

    锁升级与优化

    从1.6以后为了减少获得锁和释放锁带来的性能消耗,引入了偏向锁和轻量锁

    锁级别从低到高

    • 无锁状态

    • 偏向锁状态

    • 轻量锁状态

    • 重量锁状态

    原子操作的实现原理

    其他

    • 名词解释

    • 内存屏障

    • 缓存行

    • 原子操作

    • 缓存行填充

    • 缓存命中

    • 写命中

    • 写缺失

    相关文章

      网友评论

          本文标题:【读书笔记】Java并发机制的底层实现原理

          本文链接:https://www.haomeiwen.com/subject/rjbqoxtx.html