美文网首页java基础
Java 并发(基础)

Java 并发(基础)

作者: Marlon666 | 来源:发表于2018-06-13 14:29 被阅读0次

    Java 并发和高并发

    https://coding.imooc.com/learn/list/195.html

    Java 多线程模块:

    并发的基本概念:

    同时拥有一个或者多个线程,如果程序在单核处理器上运行,多个线程将交替的换入或者换出内存。
    一个线程对应者Cpu的一个内核。现在系统都是多核处理器,同时支持多个并发一起执行程序。
    

    CPU 多级缓存

    因为Cpu运算速度飞速提高,而内存的读取速度有限。导致,Cpu一直在等待内存读取存储区的数据,为了加快计算效率,
    使用内存中出现缓存进行,提高读取速度。
    cpu       缓存     主存
    cpu -> cache -> memory
    

    Cpu多级缓存的意义?

    1)时间局部性:如果某一个数据被访问,那么不久的将来,它很可能被再次访问。
    2)空间局部性:如果某个数据被访问,他们与他相邻的数据很快也有可能被访问
    

    Cpu对Cache的状态?

    用于保证多个Cpu cache 之间缓存共享数据的一致性
    M :Modifier  修改
    E : Exclusive 独享,专用的 
    S : Share 共享 
    I :Invalid 无效的  
    
    local read    读取本地缓存
    local write   写入本地缓存
    remote read   读取主存中的数据
    remote write  把数据写入主存
    
    image.png

    Java 内存模型(java Memory model ,jmm)

    Heap  堆 : 运行时动态分配内存  存取速度相对慢
    Stack 栈 :存取速度块,仅此于计算机里的寄存器, 共享。  1.存储基本对象类型 2.存储空间小 3、生成期数据,不是太灵活
       
    当多个线程,访问同一个变量,他们拥有的是该变量的私有拷贝。
    
    CPU  ->  cpu 寄存器 -> cpu缓存(读写速度非常块的存储区域) ->  内存 
    

    Java内存模型 同步八种操作

    Lock 锁定 :用于主内存的变量,把一个变量标识为一条线程独占状态。
    Unlock 解锁 :用于主内存的变量,把一个处于锁定状态的变量释放出来,释放后的变量可以被其他线程锁定。
    Read 读取:  作用于主内存的变量,把一个变量值从主内存传输到线程的工作内存中去,以便以后load动作使用。
    Load 载入: 工作于内存的变量,把他read操作从主内存的变量值放入工作内存的变量副本中去。
    Use 使用:  作用于工作内存的变量,把工作内存中的一个变量值传给执行引擎。
    Assign 赋值: 作用于工作内存的变量,他把一个从执行引擎接收到的值赋值给工作内存的变量。
    Store 存储: 作用于工作内存的变量,把工作内存中一个变量的值传送哒到主存中,以便随后的write的操作。
    write 写入: 作用于主存的变量,他把store操作从工作内存中一个变量的值传送到主内存的变量中去。
    
    image.png image.png

    相关文章

      网友评论

        本文标题:Java 并发(基础)

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