首页 > 其他分享 >锁与并发 synchronized(1)

锁与并发 synchronized(1)

时间:2022-08-20 11:45:01浏览次数:54  
标签:缓存 变量 synchronized 工作 并发 线程 内存 作用

 

1.synchronized 锁的升级过程:

  

 

   由于并发量不同,争抢的激烈程度不同出现锁的升级。

  锁升级不可逆。

 

2.为什么要使用锁。

  对共有资源的操作,因为对同一资源涉及多数据的复制,使用,回写等不能保证资源的原子性。

即围绕共有资源的原子性和有序性,可见性。

  cup处理数据需要遵循

  2.1JMM模型

   (1)lock(锁定): 作用于主内存的变量,把一个变量标记为一条线程独占状态 

  (3)read(读取): 作用于主内存的变量,把一个变量值从主内存传输到线程的工作内存中, 以便随后的load动作使用 

  (4)load(载入): 作用于工作内存的变量,它把read操作从主内存中得到的变量值放入工作 内存的变量副本中 

  (5)use(使用): 作用于工作内存的变量,把工作内存中的一个变量值传递给执行引擎 

  (6)assign(赋值): 作用于工作内存的变量,它把一个从执行引擎接收到的值赋给工作内存 的变量 

  (7)store(存储): 作用于工作内存的变量,把工作内存中的一个变量的值传送到主内存中, 以便随后的write的操作 

  (8)write(写入): 作用于工作内存的变量,它把store操作从工作内存中的一个变量的值传送 到主内存的变量中

  (2)unlock(解锁): 作用于主内存的变量,把一个处于锁定状态的变量释放出来,释放后的 变量才可以被其他线程锁定 

  2.2 MESI 缓存一致性协议

  1. 数据刷回主内存
  2. 行缓存
  3. 缓存一致性协议
  4. 内存屏障
  5. io总线风暴

  2.3嗅探机制

      每个处理器会通过嗅探器来监控总线上的数据来检查自己缓存内的数据是否过期,如果发现自己缓存行对应的地址被修改了,就会将此缓存行置为无效。 当处理器对此数据进行操作时,就会重新从主内存中读取数据到缓存行.

 

3.volatile

  保障变量的可见性和禁止重排序,不能保证原子性。

  可见性:  实现缓存一致性协议   重排序: 禁止重排序。     

volatile是保障缓存中的数据的可见性,如果线程已经开始操作赋值,无法修改。

 

标签:缓存,变量,synchronized,工作,并发,线程,内存,作用
From: https://www.cnblogs.com/dhdnm/p/16607400.html

相关文章

  • 一台服务器​最大并发 TCP 连接数多少
    一台服务器​最大并发TCP连接数多少入门小站 入门小站 2022-07-0622:10 发表于湖北收录于合集#Linux485个#tcp4个首先,问题中描述的65535个连接指的是......
  • 图解 Kafka 超高并发网络架构演进过程
    阅读本文大约需要30分钟。大家好,我是华仔,又跟大家见面了。上一篇作为专题系列的第一篇,我们深度剖析了关于Kafka存储架构设计的实现细节,今天开启第二篇,我们来深......
  • 38、python并发编程之IO模型
    38、python并发编程之IO模型  目录:一IO模型介绍二阻塞IO(blockingIO)三非阻塞IO(non-blockingIO)四多路复用IO(IOmultiplexing)五异步IO(A......
  • 37、python并发编程之协程
    37、python并发编程之协程  目录:一引子二协程介绍三Greenlet四Gevent介绍五Gevent之同步与异步六Gevent之应用举例一七Gevent之应用举例......
  • 32 python并发编程之背景知识
    32python并发编程之背景知识 目录:一引子二为什么要有操作系统三什么是操作系统四操作系统与普通软件的区别五操作系统发展史六总结视频链接:......
  • 对象完成具体业务逻辑在并发架构中产生的影响的思考
    思考回合制6v6游戏,战斗场景中的战斗调度器,会依次按组筛选双方对手进行kill,一般情况下,写一个公共方法kill(a,b)即可解决。这种方式,很容易能看出在并发模式下,会出现哪......
  • java 并发编程规约
    Rule1.【强制】创建线程或线程池时请指定有意义的线程名称,方便出错时回溯1)创建单条线程时直接指定线程名称```Threadt=newThread();t.setName("cleanup-thread......
  • 并发和并行
    原文:面试必考的:并发和并行有什么区别?某天下班后,我在家里进行电话面试,问到面试者这样一个问题:“能不能简单介绍一下你理解的并发和并行,并说明一下他们之间的关系”。但......
  • 高并发之网络IO模型
    你好,我是坤哥今天我们聊一下高并发下的网络IO模型高并发即我们所说的C10K(一个server服务1w个client),C10M,写出高并发的程序相信是每个后端程序员的追求,高并发架构......
  • 8、ThreadPoolTaskExecutor线程并发
    一、线程池的优点:1、降低资源消耗。通过重复利用自己创建的线程降低线程创建和销毁造成的消耗。2、提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行......