并发
线程与 Executor
直接 new Thread() 不利于资源管理。使用 ExecutorService(如 Executors 工厂或更推荐显式 ThreadPoolExecutor 配置)提交 Runnable/Callable。
关闭:shutdown() / shutdownNow(),并处理未完成任务与中断。
synchronized 与 volatile
synchronized 保证互斥与可见性(在 JMM 规则下)。volatile 保证可见性与有序性约束,不提供复合操作的原子性(如 i++ 仍需原子类或锁)。
java.util.concurrent
CountDownLatch、CyclicBarrier、Semaphore、Phaser 等协调原语;ConcurrentHashMap、BlockingQueue 用于生产者消费者。
java.util.concurrent.atomic
AtomicInteger 等提供无锁 CAS 更新;ABA 问题在高阶场景可用 AtomicStampedReference 等。
虚拟线程(21+)
轻量级线程,阻塞 I/O 友好;非所有负载都更快,CPU 密集仍用平台线程池与并行流需谨慎测量。与 synchronized 在 JDK 21 初期的 pinning 问题需关注发行说明与后续版本修复。
调试
-ea 断言;生产诊断用线程 dump、jcmd、异步分析器。数据竞争优先通过设计与 java.util.concurrent 原语避免。