用途
Java 并发技能(java-concurrency)用于帮助开发者掌握 Java 并发编程模式,构建线程安全的应用。它来源于 pluginagentmarketplace/custom-plugin-java,可通过 Skill("java-concurrency") 方式调用。
主要能力
该技能覆盖的主题包括四个部分。
线程管理:线程生命周期与状态、守护线程与用户线程的区别、中断处理。
同步机制:synchronized 与 volatile、Lock 接口(如 ReentrantLock)、原子操作。
执行器:ThreadPoolExecutor 配置、ForkJoinPool。
虚拟线程(Java 21+)与 CompletableFuture:异步执行、链式与组合操作、异常处理。
适用场景
技能说明中列出了以下适用情形:编写线程安全代码、实现并行处理、使用异步编程模式、调优线程池、调试并发问题。
使用方式
调用形式为 Skill("java-concurrency")。技能内附快速参考代码片段,涵盖虚拟线程创建、CompletableFuture 组合、线程池配置和带超时的锁使用。
虚拟线程示例使用 Executors.newVirtualThreadPerTaskExecutor(),在 try-with-resources 中向该执行器提交任务。
CompletableFuture 示例演示了 thenCompose 串联、thenApply 转换、exceptionally 异常处理与 orTimeout 超时设置。
线程池示例展示了 ThreadPoolExecutor 构造参数,包括核心与最大线程数、存活时间、有界队列 ArrayBlockingQueue 以及 CallerRunsPolicy 拒绝策略。
锁示例展示 ReentrantLock 的 tryLock 带超时用法,并在 finally 中释放锁。
线程池容量参考
技能给出了两类工作负载的线程数公式与示例:CPU 密集型使用核数(示例为 8 线程);I/O 密集型使用 cores * (1 + wait/compute)(示例为 80 线程)。
问题排查
针对死锁,说明原因为循环锁,解决方式为锁排序与 tryLock;针对竞态条件,原因为缺少同步,解决方式为增加锁或原子操作;针对线程饥饿,原因为不公平调度,解决方式为公平锁。
调试命令示例包括:jstack -l <pid> > threaddump.txt 与 jcmd <pid> Thread.print。
限制
资料未提供该技能的收费、价格、平台支持范围、版本兼容性说明以及完整的安装步骤,这些信息暂未提供。