用途:该技能用于在 Java 中实现现代并发编程,强调虚拟线程(Loom)与线程安全,优先级为 P1(HIGH)。
主要能力与准则:
- 虚拟线程(Java 21):适用于高吞吐 I/O,使用 Executors.newVirtualThreadPerTaskExecutor()。
- 结构化并发:使用 StructuredTaskScope 将相关任务视为一个整体(Scope、Fork、Join)。
- 不可变性:在线程间共享不可变数据,避免竞态条件。
- CompletableFuture:在不使用虚拟线程时用于组合异步流水线。
- 原子变量:简单计数器使用 AtomicInteger、LongAdder。
- 锁:需要细粒度控制时优先使用 ReentrantLock / ReadWriteLock,而非 synchronized。
- 线程安全:用 @ThreadSafe 或 @NotThreadSafe 标注文档。
反模式(应避免):
- 不要 new Thread():使用 Executors 或虚拟线程,绝不手动创建线程。
- 不要池化虚拟线程:虚拟线程开销低,绝不池化。
- 不要在 synchronized 中阻塞:会固定载体线程(Loom 陷阱),改用 ReentrantLock。
- 不要共享可变状态:线程间只共享不可变数据。
- 不要使用 Thread.stop/suspend:已废弃,改用中断或取消。
使用方式与限制:资料未提供具体安装命令、代码示例细节或平台要求,仅给出上述实现准则与反模式;参考部分提及 StructuredTaskScope 与 VirtualThread 示例,但未展开。适用场景为 Java 21 及以上版本的高吞吐 I/O 与并发任务编排。