RxJavaJava服务器端编程编程语言爱好者

并发编程-Java内存模型(JMM)

2020-11-26  本文已影响0人  迦叶_金色的人生_荣耀而又辉煌

上一篇 <<<锁的优化
下一篇 >>>Volatile解决JMM的可见性问题


Java内存模型(JMM):定义了一个线程对另一个线程可见。

JMM和JVM的区别

JMM核心

定义了线程和主内存之间的抽象关系:
线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个私有的本地内存(local memory),本地内存中存储了该线程以读/写共享变量的副本。
本地内存是JMM的一个抽象概念,并不真实存在。它涵盖了缓存,写缓冲区,寄存器以及其他的硬件和编译器优化。

主内存:
存放我们共享变量的数据
工作内存:
每个CPU对共享变量(主内存)的副本。堆+方法区
注意:当多个线程同时访问一个数据的时候,可能本地内存A没有及时刷新到主内存中,本地内存B读取的时候会造成脏读,也就是会发生线程安全问题。但加上关键字Volatile就会立马告知。

JMM同步8大步骤


相关文章链接:
多线程基础
线程安全与解决方案
锁的深入化
锁的优化
Volatile解决JMM的可见性问题
Volatile的伪共享和重排序
CAS无锁模式及ABA问题
Synchronized锁
Lock锁
AQS同步器
Condition
CountDownLatch同步计数器
Semaphore信号量
CyclicBarrier屏障
线程池
并发队列
Callable与Future模式
Fork/Join框架
Threadlocal
Disruptor框架
如何优化多线程总结

上一篇 下一篇

猜你喜欢

热点阅读