一.并发与高并发基本概念
1.并发基本概念
- 并发指同时拥有两个或多个线程,如果程序在单核处理器上运行,多个线程将交替地换入或换出内存,这些线程是同时“存在”的,每个线程都处于执行过程中的某个状态,如果运行在多核处理器上,此时,程序中的每个线程都将分配到一个处理器核上,因此可以同时运行
2.高并发基本概念
- 高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指通过设计保证系统同时并行处理很多请求
3.名词含义
- 并发:多个线程操作相同的资源,保证线程安全,合理使用资源
- 高并发:服务能同时处理很多请求,提高程序性能
二.并发编程的基础
1.CPU多级缓存-缓存一致性
-
为什么需要CPU cache:CPU的频率太快,快到主存跟不上,这样在处理器时钟周期内,CPU常常需要等待主存,浪费资源。所以cache的出现,是为了缓解CPU和内存之间速度的不匹配问题(结构:cpu -> cache -> memory)
-
CPU cache有什么意义
- 时间局部性:如果某个数据被访问,那么在不就得将来它很可能被再次访问
- 空间局部性:如果某个数据被访问,那么与它相邻的数据很快也可能被访问
-
CPU多级缓存—缓存一致性(MESI协议)
-
用于保证多个CPU cache之间缓存共享数据的一致
-
MESI其实是四个状态的缩写
- M:modified被修改。表示该缓存行只被缓存在该CPU的缓存中,并且是被修改过的。该缓存行中的内存将会在未来的时间点写回主存,该缓存行的状态被改为E,即独享。
- E:exclusive资源独享。独享状态的缓存行只被缓存在该CPU的缓存中,是未被修改过的,与主存中一致的,可以在任何状态当有其他CPU读写该内存时变成S状态,当该CPU修改该缓存行内容时会变成M状态。
- S:shared共享状态,表示该缓存行可能被多个CPU进行缓存,并且各个缓存中的数据与主存中的数据是一致的,当有一个CPU修改该缓存行时,其他CPU的该缓存行被作废的,变成Invalid状态。
- I:invalid无效状态,即表示该缓存行可能是无效的,可能是其他CPU修改了该缓存行。
[外链图片转存失败(img-ZX7JzSFp-1564322693235)(/Users/wangzhe/Practice/Java并发编程入门/MESI协议.png)]
-
2.CPU多级缓存-乱序执行优化
- 什么是乱序执行优化:处理器为提高运算速度而做出违背代码原有顺序的优化
- 乱序执行优化在多核CPU处理器中可能会出现问题
3.Java内存模型
未完待续…
4.并发的优势与风险
未完待续…