![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java并发编程
Nopromisess
work makes one free
展开
-
volatile关键字原理
volatile的主要作用是在多核处理器开发中保证共享变量对于多线程的可见性 并发编程的线程安全,本质就是原子性,有序性,可见性 从硬件上来看,多核cpu的架构采用分级高速缓存 cpu缓存分为三层,level1有两个,一个是指令缓存,一个是数据缓存;level3为同一cpu中的多核共享 在多cpu的情况下,如果不同cpu之间需要共享数据则需要从主内存中获取 缓存锁 多个线程操作同一个被缓存的共享数据的原子性需要被被保证,所以当某个cpu需要操作一个被多线程缓存的共享数据时,只需要给这个被共享的数据进行加原创 2020-07-10 14:05:48 · 493 阅读 · 1 评论 -
ReentrantLock原理
思考: lock的初衷是什么?实现线程安全的原子性和有序性?锁定指定代码块,使得代码块的原子性得到保障,同时代码块内的代码禁止指令重排 juc中的locks包下的Lock接口的主要实现类有ReentrantLock等 ReentrantLock主要是利用CAS和AQS来实现 CAS:乐观锁的一种实现,在乐观锁与悲观锁中有介绍 AQS:AbstractQueuedSynchronizer抽象队列同步器 AQS使用的是一个FIFO队列(first in first out)表示排队等待锁的线程,队列头节点称原创 2020-07-09 15:37:02 · 216 阅读 · 0 评论