最近看《深入理解 JVM》时看到了第12章的Java内存模型与线程,看完后让人豁然开朗,以下内容大部分为个人理解的书籍相关内容(如有错误请及时指出修正)。
先介绍一下这篇文章内容的几个关键字:
1、多线程:由于计算机的运算速度与它的存储和通信子系统速度的差距太大,处理器大量的时间都是浪费在磁盘I/O、网络通信或者数据库访问上,为了压榨计算机的运算能力,于是让计算机同时处理几项任务,进而出现了多线程。
2、缓存:由于计算机的存储速度和处理器的运算速度有几个数量级的差距,所以现代计算机都不得不加入一层读写速度尽可能接近处理运算速度的高速缓存来作为内存与处理器之前的缓冲。
3、工作内存与主存:虽然缓存能够很好的解决处理器与内存之间的矛盾,但是由于多线程的缘故也引入了一些新的问题——缓存一致性。为了解决这个一致性的问题,于是引入了每个线程的高速缓存和主内存,在多处理器系统中,每个处理器都有自己的高度缓存&#