美文网首页
并发编程基础

并发编程基础

作者: 磊_5d71 | 来源:发表于2018-11-01 15:28 被阅读0次
  • 并发
    1、同时拥有两个或多个线程,如果程序在单核处理器上运行,多个线程交替地换入或者换出内存,这些线程是同时存在的,每个线程都处于执行过程中的某个状态,如果运行在多核处理器上,此时,程序中的每个线程都将分配到一个处理器核上,可以同时运行。
    2、多个线程操作相同的资源,保证线程安全,合理使用资源
  • 高并发
    1、(high Concurrency)是通过设计保证系统能够同时并行处理很多请求。
    2、服务能同时处理很多请求,提高程序性能。

CPU多级缓存

图片.png
  • 为什么要使用缓存
    CPU的频率太快了,快到主存跟不上,这样在处理器时钟周期内,CPU常常需要等待主存,浪费资源。所以cache出现,是为了缓解CPU和内存之间速度不匹配的问题。(cpu -> cache -> memory)
  • CPU cache有什么意义
    1、时间局部性:如果某个数据被访问,那么不久的将来它很可能被再次访问。
    2、空间局部性:如果某个数据被访问,那么它相邻的数据很快也可能被访问。

缓存的一致性(MESI)

首字母缩略词MESI中的字母表示可以标记高速缓存行的四种独占状态(使用两个附加位编码):
1、修改(M)
高速缓存行仅存在于当前高速缓存中,并且是脏的 - 它已从主存储器中的值修改(M状态)。在允许对(不再有效)主存储器状态的任何其他读取之前,需要高速缓存在将来的某个时间将数据写回主存储器。回写将该行更改为共享状态(S)。
2、独家(E)
  缓存行仅存在于当前缓存中,但是干净 - 它与主内存匹配。它可以随时更改为共享状态,以响应读取请求。或者,可以在写入时将其改变为修改状态。
3、共享(S)
  表示此高速缓存行可能存储在计算机的其他高速缓存中并且是干净的 - 它与主存储器匹配。可以随时丢弃该行(更改为无效状态)。
4、无效(I)
  表示此缓存行无效(未使用)。对于任何给定的高速缓存对,给定高速缓存行的允许状态如图。当块标记为M(已修改)时,其他高速缓存中块的副本将标记为I(无效)


图片.png

CPU多级缓存-乱序执行优化

图片.png

Java内存模型(Java Memory Model,JMM)

图片.png 图片.png 图片.png

Java内存模型-同步的八种操作

  • lock锁定:作用于主内存的变量,把一个变量标识为一条线程独占状态
  • unlock解锁:作用于主内存的变量,把一个处于锁定状态的变量释放出来,释放后的变量才可以被其他线程锁定
  • read读取:作用于主内存的变量,把一个变量值从主内存传输到线程的工作内存中,以便随后的load动作使用
  • load载入:作用于工作内存的变量,它把read操作从主内存中得到的变量值放入工作内存的变量副本中。
  • user使用:作用于工作内存的变量,把工作内存中的一个变量值传递给执行引擎
  • assign赋值:作用于工作内存的变量,它把一个从执行引擎接收到的值赋值给工作内存的变量
  • store存储:作用于工作内存的变量,把工作内存中的一个变量的值传送到主内存中,以便随后的write操作
  • write写入:作用于主内存的变量,它把store操作从工作内存中一个变量的值传送到主内存的变量中。


    图片.png

并发的优势与风险

  • 通常来说网络的io和磁盘的io要比cpu与内存io慢很多,多线程可以利用这些时间处理。


    图片.png

相关文章

  • java并发线程的基础

    Java并发系列之java并发编程基础

  • Java并发编程基础之并发包源码剖析(书籍目录)

    并发编程是Java编程的核心领域,而Java并发包则凝聚了并发编程的精华,掌握并发编程基础,熟练应用,理解思想则显...

  • 面试大纲

    基础算法 排序 查找 动态规划 并发编程 复习资料 《java并发编程的艺术》 https://redspider...

  • Java并发编程知识点梳理

    一 并发编程基础知识 1.1 概念 并发编程是你编写的代码有可能在多线程环境中执行, 1.2 为什么要用并发编程...

  • 精通Java并发 - 线程池

    0. 前言 为什么需要学习并发编程? Tomcat、Netty等框架源码,需要并发编程基础才能看懂;并发也是Jav...

  • 并发 - 并发编程基础

    一、概述 一个Java程序也是一个多线程程序。JVM 启动的[5] Attach Listener ...

  • 清华大牛出版的java并发编程从入门到精通,不要让它继续蒙灰了

    内容简介 本书作者结合自己10多年Java并发编程经验,详细介绍了Java 并发编程的基础概念。工作原理。编程技巧...

  • Go 基础

    基础 [TOC] 特性 Go 并发编程采用CSP模型不需要锁,不需要callback并发编程 vs 并行计算 安装...

  • 并发编程基础

    几个基本概念 同步&异步同步(Synchronous)同步方法一旦调用必须等待方法调用返回后才会继续后续行动异步(...

  • 并发编程基础

    并发1、同时拥有两个或多个线程,如果程序在单核处理器上运行,多个线程交替地换入或者换出内存,这些线程是同时存在的,...

网友评论

      本文标题:并发编程基础

      本文链接:https://www.haomeiwen.com/subject/vcwtxqtx.html