java-concurrency について
java-concurrencyは、スレッドセーフなコードや並列処理の実装、並行処理の問題調査に取り組む開発者向けのスキルです。スレッド管理、同期、Executor、仮想スレッド、CompletableFutureを扱い、調整とトラブルシューティングの資料も含みます。
主な機能
- 01スレッドのライフサイクルと割り込み処理
- 02ロック・同期・アトミック操作の解説
- 03スレッドプールとForkJoinPoolの解説
- 04Java 21+の仮想スレッドの紹介
- 05CompletableFutureの合成と例外処理
活用シーン
- 01スレッドセーフなJavaコードの実装
- 02並列処理向けExecutorの設定
- 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 対応