1 计算机多核并发缓存架构
先说一个前提:cpu的运算速度在飞速提升,而磁盘的运算速度远远跟不上cpu的发展速度,这种情况下cpu的速度再快都是没有意义的,运算的再快无法写入主存也是没有意义的。这时候就有的缓存的概念,相比磁盘缓存由于使用电信号,其运算速度相比磁盘快的多(固态硬盘比机械盘快也是这个道理),而且为了达到更高的运算速度,如今的cpu是有多级缓存的,常见的是有3级。
其原理就是在cpu跟主内存中间加了一个中间件来协调二者的速度问题。
java内存模型
java内存模型基于cpu缓存模型。
java一个线程运行时,是通过多个原子操作来实现的。首先通过read(读取)操作将数据从主存中读取出来,然后通过load(载入)操作载入线程的工作空间中,接着线程执行use(使用)操作来对数据进行运算,再然后将运算好的数据通过assign(赋值)操作将数据回写工作空间,接着通过store(存储)操作将工作空间的数据写入主内存,最后通过write(写入)操作更新主存中的变量值。
(图片来着网络)
除此之外 还有lock、unlock两个原子操作这两个跟volatile关键字关系密切,放在后文来说。