{
  "id": "java-concurrency-and-virtual-thread",
  "name": "java-concurrency-and-virtual-thread",
  "version": "0.1.0",
  "type": "skill",
  "provider": "java",
  "harnesses": [
    "codex",
    "claude-code",
    "cursor",
    "gemini",
    "kiro",
    "other"
  ],
  "summary": "Static review of virtual-thread adoption correctness at scale: pooling/capping anti-patterns, a VT migration that strips a downstream resource bound without re-imposing a Semaphore, JDK-version-gated carrier pinning (JEP 444 vs JEP 491), ThreadLocal cost at scale, StructuredTaskScope preview status, and classic executor/visibility hygiene. Reads source and sanitized configuration only.",
  "source_type": "original",
  "official_docs": [
    "https://openjdk.org/jeps/444",
    "https://openjdk.org/jeps/491",
    "https://openjdk.org/jeps/0",
    "https://docs.oracle.com/en/java/javase/"
  ],
  "security_notes": "Static review only — reads Java source (Thread.ofVirtual/newVirtualThreadPerTaskExecutor call sites, ExecutorService construction, synchronized blocks, ThreadLocal usage) and sanitized configuration (pool-size properties, rate-limiter config, any JFR/trace text the user pastes as plain text); never runs a build, invokes a JDK, attaches a profiler or JFR recorder, or opens a live thread dump/DB/broker connection. Never requests connection strings, credentials, tenant identifiers, or customer data.",
  "last_verified": "2026-07-17",
  "path": "skills/java/java-concurrency-and-virtual-thread",
  "author": "github: VincentChuWaiChow"
}
