JVM_5.内存模型
侧边栏壁纸
  • 累计撰写 53 篇文章
  • 累计收到 5 条评论

JVM_5.内存模型

bbchen
2023-05-22 / 0 评论 / 75 阅读 / 正在检测是否收录...

内存模型

1.Java内存模型

Java内存模型是Java Memory Model (JMM)的意思

JMM定义了一套在多线程读写共享数据时(成员变量、数组),对数据的可见性、有序性和原子性的规则和保障。

1.1 原子性

Java中,对静态变量的自增自减并不是原子操作

Java的内存模型如下,完成静态变量的自增、自减需要在主存和线程内存中进行数据交换:

image-20230522164752517

1.2 解决方法

synchronized(同步关键字)

2.1 可见性

2.2 解决方法

volatile

3.1 有序性

3.2 解决方法

volatile

2.CAS与原子类

CAS即Compare and Swap,它体现一种乐观锁的思想,比如多个线程要对一个恭喜那个的整形变量执行+1操作:

image-20230522173332893

获取共享变量时,为了保证该变量的可见性,需要使用volatile修饰。结合CASvolatile可以实现无锁并发,适用于竞争不激烈、多核CPU的场景下。

  • 因为没有使用synchronized, 所以线程不会陷入阻塞,这是效率提升的因素之-
  • 但如果竞争激烈,可以想到重试必然频繁发生,反而效率会受影响

后面涉及到的synchronized优化,确实是听不太懂,放到学完JUC后再进行...

0

评论

博主关闭了所有页面的评论