关于 java-concurrency
java-concurrency 是介绍 Java 并发编程的技能,适合编写线程安全代码、并行处理和排查并发问题的开发者。内容涵盖线程管理、同步机制、执行器、虚拟线程与 CompletableFuture,并附有调优和故障排查参考。
主要功能
- 01讲解线程生命周期与中断处理
- 02介绍同步器、锁与原子操作
- 03涵盖线程池和 ForkJoinPool
- 04说明 Java 21+ 虚拟线程
- 05介绍 CompletableFuture 组合与异常处理
适用场景
- 01实现线程安全的 Java 代码
- 02为并行处理配置执行器
- 03排查死锁、竞态和线程饥饿
- 04调试线程池或并发任务
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pluginagentmarketplace/ custom-plugin-java --skill java-concurrency安装后在 Claude Code 中输入/java-concurrency确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/config.yamlschema.jsonreferences/GUIDE.mdPATTERNS.mdscripts/validate.py详细介绍
Java 并发技能
掌握 Java 并发模式,构建线程安全的应用程序。
概述
本技能涵盖从基础线程到虚拟线程(Java 21+)的并发知识,包括线程池、同步和 CompletableFuture。
适用场景
在以下情况下使用:
- 编写线程安全的代码
- 实现并行处理
- 使用异步编程模式
- 调优线程池
- 调试并发问题
涵盖主题
线程管理
- 线程生命周期和状态
- 守护线程与用户线程
- 中断处理
同步
- synchronized、volatile
- Lock 接口(ReentrantLock)
- 原子操作
执行器
- ThreadPoolExecutor 配置
- ForkJoinPool
- 虚拟线程(Java 21+)
CompletableFuture
- 异步执行
- 链式调用与组合
- 异常处理
快速参考
// Virtual Threads (Java 21+)
try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
IntStream.range(0, 10_000).forEach(i ->
executor.submit(() -> processRequest(i)));
}
// CompletableFuture composition
CompletableFuture<Result> result = fetchUser(id)
.thenCompose(user -> fetchOrders(user.id()))
.thenApply(orders -> processOrders(orders))
.exceptionally(ex -> handleError(ex))
.orTimeout(5, TimeUnit.SECONDS);
// Thread pool configuration
ThreadPoolExecutor executor = new ThreadPoolExecutor(
10, 50, 60L, TimeUnit.SECONDS,
new ArrayBlockingQueue<>(1000),
new ThreadPoolExecutor.CallerRunsPolicy()
);
// Lock with timeout
ReentrantLock lock = new ReentrantLock();
if (lock.tryLock(1, TimeUnit.SECONDS)) {
try {
// critical section
} finally {
lock.unlock();
}
}
线程池大小设置
| 工作负载 | 公式 | 示例 |
|---|---|---|
| CPU 密集型 | 核心数 | 8 个线程 |
| I/O 密集型 | 核心数 * (1 + 等待时间/计算时间) | 80 个线程 |
故障排查
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 死锁 | 循环锁 | 锁排序、tryLock |
| 竞态条件 | 缺少同步 | 添加锁/原子操作 |
| 线程饥饿 | 调度不公平 | 公平锁 |
调试命令
jstack -l <pid> > threaddump.txt
jcmd <pid> Thread.print
用法
Skill("java-concurrency")
评论
支持 Markdown