JUC 实战

ReentrantLock

比 synchronized 更灵活:可中断、可定时、公平锁可选。

CountDownLatch

等待 N 个并发任务全部完成:

CountDownLatch latch = new CountDownLatch(3);
latch.countDown();
latch.await();

CompletableFuture

链式异步:thenApply / thenCompose / allOf。