Java并发编程与高并发解决方案(一)

一.并发与高并发基本概念

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.并发的优势与风险

未完待续…

发布了258 篇原创文章 · 获赞 332 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/qq_34829447/article/details/97620379