美文网首页
java内存模型JMM

java内存模型JMM

作者: 陈桐Caliburn | 来源:发表于2020-07-03 13:01 被阅读0次
    java内存模型

    Java 线程之间的通信总是隐式进行,并且采用的是共享内存模型。
    这里提到的共享内存模型指的就是 Java 内存模型(简称 JMM),JMM 决定一个线程对共享变量 的写入何时对另一个线程可见。
    从抽象的角度来看,JMM 定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main memory)中,每 个线程都有一个私有的本地内存(local memory),本地内存中存储了该线程以读/写共享变量的副本。
    本地内存是 JMM 的一个抽象概念,并不真实存在。它涵 盖了缓存,写缓冲区,寄存器以及其他的硬件和编译器优化。

    volatile和synchronized的区别
    volatile本质是在告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取; synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。
    volatile仅能使用在变量级别;synchronized则可以使用在变量、方法、和类级别的
    volatile仅能实现变量的修改可见性,不能保证原子性;而synchronized则可以保证变量的修改可见性和原子性
    volatile不会造成线程的阻塞;synchronized可能会造成线程的阻塞。
    volatile标记的变量不会被编译器优化;synchronized标记的变量可以被编译器优化

    相关文章

      网友评论

          本文标题:java内存模型JMM

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