java内存模型

131 阅读1分钟

计算机多核并发缓存架构

    先说一个前提:cpu的运算速度在飞速提升,而磁盘的运算速度远远跟不上cpu的发展速度,这种情况下cpu的速度再快都是没有意义的,运算的再快无法写入主存也是没有意义的。这时候就有的缓存的概念,相比磁盘缓存由于使用电信号,其运算速度相比磁盘快的多(固态硬盘比机械盘快也是这个道理),而且为了达到更高的运算速度,如今的cpu是有多级缓存的,常见的是有3级。其原理就是在cpu跟主内存中间加了一个中间件来协调二者的速度问题。

java内存模型

    java内存模型基于cpu缓存模型。

线程运行过程

    java一个线程运行时,是通过多个原子操作来实现的。首先通过read(读取)操作将数据从主存中读取出来,然后通过load(载入)操作载入线程的工作空间中,接着线程执行use(使用)操作来对数据进行运算,再然后将运算好的数据通过assign(赋值)操作将数据回写工作空间,接着通过store(存储)操作将工作空间的数据写入主内存,最后通过write(写入)操作更新主存中的变量值。与主存交互全部通过总线来实现,加锁的操作也是加在总线上来实现的,cpu通过嗅探机制,嗅探总线上的数据是否与自身副本一致,不一致则副本失效从新加载。 (图片来自网络)