首先,在我们的脑海中应该有一些概念
- CPU缓存行:64bytes,是cpu读取内存数据的最小单位,就是说每次从内存中读取时,读取一个或多个缓存行大小的数据
- 并发三大特性:
- 原子性:一个或多个操作,要么全部执行,要么全部不执行
- 可见性:一个线程修改共享变量,其他线程可以看到修改的值
- 有序性:程序执行顺序按照代码先后顺序执行
- 内核空间/用户空间,内核态/用户态,内核级线程(KLT)/用户级线程(ULT)
- 内核空间和用户空间是针对于内存划分的。操作系统所在区域是内核空间,用户进程所在区域是用户空间
- 内核态和用户态是针对于CPU来做区分的。
- KLT和ULT主要时针对于是由谁管理这些线程来区分的。线程交给内核管理,就是KLT;线程由用户进程自己去管理,就是ULT。
其次,围绕并发三大块内容进行整理
-
volatile关键字
-
JMM: java内存模型,是一个抽象的概念,是为了方便理解多线程下各个线程的情况工作的情况。分为工作内存和主内存。线程工作时,变量从主内存拷贝到工作内存中,线程操作变量都是操作的工作内存中的副本。所以会有线程安全问题。
</
-