并发编程
文章平均质量分 88
循序渐进,由浅入深。深入理解并发编程,称为面试加分项。
韦韦韦韦韦韦
舒服就离下坡不远了
展开
-
Java内存模型(JMM)
JMM抽象结构 Java采用了共享内存的方式来解决线程之间通信以及线程之间同步的问题。共享内存就是线程之间有一块共享的内存,通过读写内存上的公共状态来进行通信。Java抽象了Java内存模型,定义了线程和内存之间的抽象关系:共享的变量存储在主内存中,局部变量存储在线程的私有内存里,读写共享变量时,在线程的私有内存中存储共享变量的副本。 在这种结构下,线程A和线程B要通信的话必须要经过主内存。如果线程A要告诉线程B:我把变量a的值更新为1了,那么线程A需要以下操作: 线程A把私有内存中的变量a=1的值刷新原创 2021-04-13 22:47:54 · 99 阅读 · 0 评论 -
为什么会有并发的问题?
当设计到并发编程的时候,通常要考虑的三个问题就是可见性、原子性、有序性这个问题。 可见性 一个线程对共享变量的修改,另一个线程能够立刻看到,称为可见性 为了合理利用CPU资源,CPU增加了缓存,用来均衡和内存速度的差异。正是由于CPU缓存的存在才导致了可见性问题。所以要理解可见性问题,我们需要先了解CPU的结构,下图是一个2核4线程的CPU结构图,每个物理核都会有自己的L1 Cache、L2 Cache。所有的物理核共用L3 Cache。 在Windows电脑上可以在任务管理器界面查看L1、L2、L3原创 2021-04-13 15:38:38 · 379 阅读 · 0 评论