互联网程序员都每天刷题嘛 jmm jmm
互联网程序员都每天刷题嘛前言随着计算机的飞速发展,cpu从单核到四核,八核。在2020年中国网民数预计将达到11亿人。这些数据都意味着,作为一名java程序员,必须要掌握多线程开发,谈及多线程,绕不开的是对JMM(Java内存模型)。那么什么是JMM?什么是可见性、原子性、有序性?本文将从CPU的缓存开始谈起,深度解剖JMM底层原理。 CPU高速缓存(cache)学过操作系统的同学都应该知道CPU缓存。那么为什么要弄这么一个CPU缓存呢?这是因为缓存的出现主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾,因为CPU运算速度要比内存读写速度快很多,这样会使CPU花费很长时间等待数据到来或把数据写入内存。因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度。因此在CPU里面就有了高速缓存。也就是,当程序在运行过程中,会将运算需要的数据从主存复制一份到CPU的高速缓存当中,那么CPU进行计算时就可以直接从它的高速缓存读取数据和向其中写入数据,当运算结束之后,再将高速缓存中的数据刷新到主存当中如图,CPU缓存分为三层(L1,L2,L3 Cache),
用户评论