![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
文章平均质量分 92
沙琪玛~
认识你自己,凡事勿过度。
展开
-
synchronized关键字
在我的博客阅读本文1. 首先挂一个图图片摘自美团技术团队,个人觉得写的特别好:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6usd8Hzc-1592491318849)(https://img.masaiqi.com/20200618223900.png)]2. synchronized的锁作用范围Java锁作用范围有两种:一种是类的实例对象的锁(对象锁)。一种是类的class对象(类锁)。比如:在一个静态方法前面加synchronized关键字.原创 2020-06-18 22:42:24 · 195 阅读 · 0 评论 -
JMM(Java Memory Model)Java内存模型
在我的博客阅读本文1. 并发编程模型在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。Java的并发采用的是共享内存模型,Java线程之间的通信总是隐式进行,整个通信过程对程序员完全透明(不可见)。2. Java内存模型的抽象结构从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(MainMemory)中,每个线程都有一个私有的本地内存(LocalMemory),本地内存中存储了该线程以读/写共享变量的副本。本地内存是JMM的一个抽象概念,并.原创 2020-06-18 00:02:45 · 377 阅读 · 2 评论 -
volatile学习笔记
在我的博客阅读本文1. volatile关键字的作用可见性:对一个volatile变量的读,总是能看到(任意线程)对这个volatile变量最后的写入。有序性(阻止指令重排):volatile标志的变量的写不能与之前的代码重排序;volatile标志的变量的读不能与之后的代码进行重排序(一般记为 写前读后 后文详细说明)原子性:对任意单个volatile变量的读/写具有原子性,但类似于volatile++这种复合操作不具有原子性。2. volatile关键字的原理我们声明一个volati.原创 2020-06-16 21:58:56 · 616 阅读 · 0 评论 -
并发编程中的原子性与可见性
在我的博客阅读本文1. 可见性1.1 什么叫做可见性可见性是指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。1.2. 为什么会有可见性问题可见性问题的根本原因是因为现代CPU在设计上解决CPU运算速度与内存读写速度不匹配问题而导致的。这种访问速度的显著差异,导致CPU可能会花费很长时间等待数据到来或把数据写入内存。基于此,现在CPU大多数情况下读写都不会直接访问内存(CPU都没有连接到内存的管脚),取而代之的是CPU缓存,CPU缓存是位于CPU与内.原创 2020-06-16 12:25:36 · 348 阅读 · 0 评论