关于 125-java-concurrency
面向 Java 并发代码审查与改进的技能,按示例提供实践指导。要求修改前先编译,完成后运行完整验证。
主要功能
- 01线程安全与同步指导
- 02ExecutorService 和虚拟线程模式
- 03异步组合与协作模式
- 04取消、背压和死锁防护
- 05修改前编译及完整构建验证
适用场景
- 01审查 Java 代码中的竞态条件
- 02为工作负载选择并发原语
- 03改进取消处理和线程池行为
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jabrena/ plinth --skill 125-java-concurrency安装后在 Claude Code 中输入/125-java-concurrency确认已加载。
附带文件references/125-java-concurrency.md
详细介绍
并发对象的 Java 规则
通过使用现代 java.util.concurrent 工具和虚拟线程,识别并应用 Java 并发最佳实践,以提升线程安全性、可扩展性和可维护性。
此技能涵盖哪些内容?
- 线程安全基础:
ConcurrentHashMap、AtomicInteger、ReentrantLock、ReadWriteLock、Java 内存模型 ExecutorService线程池配置:大小、保活时间、有界队列、拒绝策略、优雅关闭- 使用
BlockingQueue实现生产者-消费者和发布-订阅模式 - 使用
CompletableFuture进行非阻塞异步组合(thenApply/thenCompose/exceptionally/orTimeout) - 不可变性和安全发布(
volatile、静态初始化器) - 锁竞争和伪共享性能优化
- 使用虚拟线程(
Executors.newVirtualThreadPerTaskExecutor())提升 I/O 密集型任务的可扩展性 - 在 Java 27 预览版中使用结构化并发(
StructuredTaskScope)处理相关子任务 - 对不可变的跨任务数据,使用
ScopedValue替代ThreadLocal - 协作式取消和
InterruptedException处理规范 - 使用有界队列和
CallerRunsPolicy实现背压 - 通过全局锁顺序和带超时的
tryLock避免死锁 - CPU 密集型任务的 ForkJoin/并行流处理规范
- 检测虚拟线程固定(JFR
VirtualThreadPinned) - 通过线程命名和
UncaughtExceptionHandler实现可观测性 - 根据用途选择合适的原语:
LongAdder、CopyOnWriteArrayList、StampedLock、Semaphore、CountDownLatch、Phaser
范围: 本参考按核心领域组织,每个领域都包含代码示例(良好/不良模式)。请根据适用示例应用建议。
约束
应用任何并发改动前,确保项目可以编译。如果编译失败,立即停止——编译失败属于阻塞条件。完成改进后,运行完整验证。
- 强制要求:进行任何改动前,先运行
./mvnw compile或mvn compile - 安全要求:如果编译失败,立即停止——编译失败属于阻塞条件,必须停止后续处理
- 验证要求:应用改进后,运行
./mvnw clean verify或mvn clean verify - 应用前:阅读参考文档,了解每种并发模式的良好/不良示例、约束和安全措施
何时使用此技能
- 审查 Java 并发代码
- 审查 Java 代码的线程安全性
- 修复 Java 并发代码中的竞态条件
- 选择 Java 中的
ExecutorService或虚拟线程 - 改进同步机制和共享可变状态处理
- 对相关 Java 子任务应用结构化并发
工作流
- 在并发改动前编译项目
运行 ./mvnw compile 或 mvn compile;如果编译失败,立即停止。
- 阅读并发参考文档并分析热点
阅读 references/125-java-concurrency.md,找出需要解决的线程安全、协调和吞吐量问题。
- 应用并发改进
实现合适的并发模式、适用于相关子任务的结构化任务作用域、取消处理规范,以及适合用途的原语。
- 通过完整构建进行验证
应用改进后,运行 ./mvnw clean verify 或 mvn clean verify。
参考
如需了解详细指导、示例和约束,请参阅 references/125-java-concurrency.md。
评论
支持 Markdown