AgentSkillsCN

java-concurrency-guidelines

Java 并发编程规范与最佳实践。 涵盖锁机制(synchronized、ReentrantLock、读写锁)、Java 内存模型(JMM)、 volatile 关键字、ThreadLocal、happens-before 规则、指令重排序等核心并发知识。 遵循“四层能力模型”:语义层、行为层、影响层、决策层,确保每个知识点都能 回答“是什么、什么时候用、用错的代价”三个核心问题。 使用场景:编写并发代码、代码审查、面试准备、排查并发问题时使用。 触发词:并发、锁、synchronized、ReentrantLock、volatile、ThreadLocal、JMM

SKILL.md
--- frontmatter
name: java-concurrency-guidelines
description: |
  Java 并发编程规范与最佳实践。
  
  涵盖锁机制(synchronized、ReentrantLock、读写锁)、Java 内存模型(JMM)、
  volatile 关键字、ThreadLocal、happens-before 规则、指令重排序等核心并发知识。
  
  遵循"四层能力模型":语义层、行为层、影响层、决策层,确保每个知识点都能
  回答"是什么、什么时候用、用错的代价"三个核心问题。
  
  使用场景:编写并发代码、代码审查、面试准备、排查并发问题时使用。
  触发词:并发、锁、synchronized、ReentrantLock、volatile、ThreadLocal、JMM

user-invocable: true
allowed-tools: Read, Grep, Glob, Write, Edit
metadata:
  version: "1.0"
  author: skill-hub
  compatibility: Java 8+

Java 并发编程规范

版本: 1.0 | 更新: 2026-02-03

本规范基于 Java 并发编程核心机制,提供可落地的工程决策指导。


概述

本 Skill 将 Java 并发编程的核心概念转化为可稳定做出正确工程决策的能力

技术栈

组件版本说明
Java8+基础并发 API
Java6+锁升级机制、自适应自旋
Java5+JUC 包、ReentrantLock

必须说明(三要素)

  • 做了什么:将锁、内存模型、线程隔离等并发机制转化为明确的决策规则
  • 为什么需要:并发 Bug 隐蔽、难以复现、代价巨大(数据不一致、死锁、性能崩溃)
  • 什么时候必须用:多线程共享可变状态、需要保证可见性/原子性/有序性时

何时使用此 Skill

场景触发词
编写并发代码synchronized、锁、并发、多线程
选择锁类型用什么锁、ReentrantLock 还是 synchronized
内存可见性volatile、可见性、JMM
线程隔离ThreadLocal、线程本地变量
代码审查并发审查、线程安全检查
性能优化锁优化、减少锁竞争

快速参考

核心决策速查

场景选择原因
简单同步synchronized自动释放、JVM 优化好
需要可中断/超时ReentrantLock提供 tryLock、lockInterruptibly
需要公平锁ReentrantLock(true)synchronized 不支持公平
读多写少ReadWriteLock读锁共享、写锁排他
只需可见性volatile无锁、轻量
线程隔离数据ThreadLocal空间换时间,避免锁

禁止项速查

❌ 禁止✅ 正确做法代价
锁大范围代码只锁必要临界区性能下降
Lock 不 finally 释放try { } finally { unlock(); }死锁
ThreadLocal 不 removefinally { threadLocal.remove(); }内存泄漏
volatile 用于复合操作用 Atomic 类或锁原子性丢失
在构造函数中逸出 this构造完成后再发布final 可见性失效

详细规范目录

主题文件内容概要
锁机制locks.mdsynchronized、ReentrantLock、读写锁的原理与选择
内存模型jmm.mdJMM、原子性/可见性/有序性、happens-before
volatilevolatile.mdvolatile 语义、使用场景、限制
ThreadLocalthreadlocal.md实现原理、弱引用机制、最佳实践
锁优化lock-optimization.md锁升级、自旋、优化策略

代码评审 Checklist

并发必查项

检查点说明严重级别
锁释放Lock 是否在 finally 中释放🔴 致命
ThreadLocal 清理是否调用 remove()🔴 致命
volatile 误用是否用于复合操作(i++)🔴 致命
锁粒度是否锁范围过大🟡 性能
死锁风险是否按固定顺序获取多把锁🔴 致命
双重检查锁定单例是否用 volatile 修饰🔴 致命

版本历史

版本日期变更
1.02026-02-03初始版本:锁机制、JMM、volatile、ThreadLocal