记录、分享
JUC-ReentrantReadWriteLock JUC-ReentrantReadWriteLock
可重入读写锁 内部有 1个读锁 1个写锁 1个sync Sync 属性: transient ThreadLocalHoldCounter readHolds; Thread firstReader HoldCounter cache
2024-09-01
JUC-StampedLock JUC-StampedLock
面试中问的少 jdk1.8中引入的,性能更好的读写锁,不可重入,且不支持condition 不直接基于AQS,而是另实现了一套AQS 使用不当易引发cpu飙高 和ReentrantReadWriteLock一样,用在读多写少的场景,但是比R
2024-09-01
JUC-ReentrantLock JUC-ReentrantLock
默认非公平 可重入锁,基于AQS 1、静态内部类Sync 实现了tryRelease方法 自定义了nonfairTryAcquire() :非公平的加锁 2、实现了Sync的两个子类 NonfairSync: 直接继承了Sync FairS
2024-09-01
JUC-LockSupport JUC-LockSupport
AQS的基础,线程阻塞、唤醒的底层基础 有个凭证的概念 面试题 为什么可以先唤醒线程后阻塞线程? 因为unpark获得了一个凭证,之后再调用park方法,就可以名正言顺的凭证消费,故不会阻塞。 为什么唤醒两次后阻塞两次,但最终结果还会阻塞线
2024-09-01
JUC-AQS原理 JUC-AQS原理
大量使用CAS进行操作 关键字: volatile int state: 同步状态 等待队列(链表):head、tail 等待节点Node:链表结构中的节点 acquire:尝试一次加锁,失败则入队列 cas循环尝试,添加到队列尾 acqu
2024-09-01
JUC基础理论 JUC基础理论
并发编程的基础 原子性、有序性、可见性 指令重排序 happens-before 规则 主要是指 动作之间的依赖 有传递性 几个子规则: 程序顺序规则、监视器规则、volatile 规则、start()规则、join 规则 as-if-se
2024-09-01
3 / 10