并发编程
从 Java 内存模型和线程协作出发,学习锁、并发容器、线程池、虚拟线程和确定性并发测试。
线程生命周期、等待通知与中断协议
从线程状态、join、wait/notify 到 interruption,建立不会丢失取消信号的线程协作协议。
JMM、Happens-Before 与三类并发性质
用计数器和发布对象示例理解原子性、可见性、有序性,以及 volatile、锁和线程启动建立的先行发生关系。
synchronized 的实现、锁状态与适用边界
从 monitorenter、monitorexit 和监视器膨胀理解 synchronized,并纠正现代 JDK 中过时的固定锁升级说法。
CAS、ABA 与 Atomic 原子类
用 AtomicStampedReference 复现 ABA,理解 Compare-And-Set 的原子更新、失败重试和竞争代价。
AQS 与 ReentrantLock 源码主线
沿着 state、tryAcquire、等待队列、park、unpark 和 release 阅读 AQS 与 ReentrantLock 的源码主线。
Semaphore、CountDownLatch 与 CyclicBarrier
按并发许可、一次性汇合和重复阶段三个需求选择 Semaphore、CountDownLatch 与 CyclicBarrier。
并发 Map、List 和 Set 的实现权衡
比较 ConcurrentHashMap、CopyOnWriteArrayList、ConcurrentSkipListMap 和并发 Set 的一致性与成本。
BlockingQueue 与生产者消费者
使用有界 BlockingQueue 和超时 offer 实现可观测背压,并比较 put、offer、take、poll 的失败语义。
ThreadPoolExecutor 参数、拒绝与动态调节
通过确定性饱和实验理解 core、maximum、queue、keepAlive 和拒绝策略,并按任务模型配置线程池。
Future 与 CompletableFuture 异步编排
用显式 Executor 编排异步任务,处理 thenCompose、超时、异常、取消和请求上下文传播。