Java 内存模型

- 1 min

以前博客文章,时间点无法追溯,统一放在 2019-01-01 00:00:00。

为什么要用到Java内存模型? 个人理解,多线程之间涉及到共享变量,而根据书中提到的,线程的数据存在本地内存主内存两处,有时共享变量要保证多个线程使用时数据的一致性,无论是本地内存还是主内存,对程序员来说是透明的,不用关心。这就需要Java在内存管理上,构建一个统一的模型,JMM(Java Memory Model)。

####重排序:

从源代码顺序经过这三种排序才最后变成真正执行的指令。如果全凭各个编译器和处理器去排序,那代码真心不知道怎么写了……。 ###内存屏障: Java编译器在编译代码时会加入内存屏障指令,就是通过内存屏障来让处理器在特定类型下重排序(你任意排序,我代码怎么写啊)。

为什么不按顺序执行,全部禁止重排序呢? 重排序是为了优化指令,更大程度上增强处理效率,不帮你优化,你执行起来不得慢的要死啊。

Java内存屏障指令分为四种:

Java内存模型-木南天

rss facebook twitter github youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora