记录、分享
ForkJoinPool ForkJoinPool
概述 对大任务,分而治之 适合CPU密集型 工作现成之间可以窃取任务 都实现了Executor和ExecutorService接口,并继承了AbstractExecutorService抽类 两种任务类型:RecursiveAction(无
2024-09-01
ThreadLocal ThreadLocal
ThreadLocal 是 Java 中的一个类,用于实现线程封闭(Thread-local)的数据存储机制。每个线程都有自己的 ThreadLocalMap,其中 ThreadLocal 对象充当键,线程的变量副本作为对应键的值。使用 T
2024-09-01
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
2 / 3