04 2021 档案
摘要:ThreadLocal 是线程的本地变量,也就是不同线程的同一个 ThreadLocal 的 get/set 是独立的。 每个线程 Thread 内部有 ThreadLocalMap,Map 的键是 ThreadLocal<T>,值是泛型 T。 那么,根据线程 Thread 和 ThreadLoca
阅读全文
摘要:1 介绍 Semaphore 称为信号量,也是一个共享锁。通过一个内部类 Sync 继承 AQS,并重写了 tryAcquireShared 和 tryReleaseShared。共享锁具体原理可以见我 AQS 的第二篇。AQS(二)共享锁 必须给初始的资源个数 state。每次 acquire 都
阅读全文
摘要:1 介绍 CountDownLatch是一种AQS共享锁,可以看之前的介绍AQS(二)共享锁(基于JDK 8) CountDownLatch 定义了一个计数器,和一个阻塞队列, 当计数器的值递减为0之前,阻塞队列里面的线程处于挂起状态,当计数器递减到0时会唤醒阻塞队列所有线程,这里的计数器是一个标志
阅读全文
摘要:@ 1 介绍 前置知识,可以看AQS(一)独占锁(基于JDK 8) ReentrantLock 是一个可重入的独占锁。 在独占模式中,isHeldExclusively 为 true 表示是对当前线程加锁,false 表示未加锁或者对其他线程加锁。 加锁状态由 state 标识,如果为0,则说明未加
阅读全文