mcpField
J
java-concurrency

java-concurrency

github.com/pluginagentmarketplace開発41466 回インストール42 週間前に更新
リポジトリ

java-concurrency について

java-concurrencyは、スレッドセーフなコードや並列処理の実装、並行処理の問題調査に取り組む開発者向けのスキルです。スレッド管理、同期、Executor、仮想スレッド、CompletableFutureを扱い、調整とトラブルシューティングの資料も含みます。

主な機能

  1. 01スレッドのライフサイクルと割り込み処理
  2. 02ロック・同期・アトミック操作の解説
  3. 03スレッドプールとForkJoinPoolの解説
  4. 04Java 21+の仮想スレッドの紹介
  5. 05CompletableFutureの合成と例外処理

活用シーン

  1. 01スレッドセーフなJavaコードの実装
  2. 02並列処理向けExecutorの設定
  3. 03デッドロック・競合・スレッド飢餓の調査
  4. 04スレッドプールや並行タスクのデバッグ

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pluginagentmarketplace/custom-plugin-java --skill java-concurrency

インストール後、Claude Code で/java-concurrencyを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
config.yaml
schema.json
references/
GUIDE.md
PATTERNS.md
scripts/
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")

コメント