npx claudepluginhub ducpm2303/claude-java-plugins --plugin java-coreThis skill is limited to using the following tools:
Review the Java code for concurrency correctness. Before reviewing, detect the Java version from `pom.xml` or `build.gradle` — suggest modern alternatives only if the version supports them.
Race conditions, deadlocks, thread analysis, happens-before relationships.
Assesses concurrency context, analyzes thread safety, detects race conditions and deadlocks in multi-threaded/async systems using Go goroutines, Rust tokio, Node.js, Python, Java, Elixir actors.
Scans Java code for performance issues including N+1 queries, unbounded data loads, string/memory inefficiencies, suboptimal collections, threading problems, and transaction scopes.
Share bugs, ideas, or general feedback.
Review the Java code for concurrency correctness. Before reviewing, detect the Java version from pom.xml or build.gradle — suggest modern alternatives only if the version supports them.
List all concurrency mechanisms found: synchronized, volatile, AtomicXxx, Lock, ExecutorService, CompletableFuture, CountDownLatch, Semaphore, BlockingQueue, virtual threads (Java 21+).
count++) not wrapped in synchronized or AtomicIntegerif (map.containsKey(k)) map.get(k) → suggest map.computeIfAbsent()HashMap shared across threads → suggest ConcurrentHashMapArrayList / HashSet shared across threads → suggest concurrent alternativessynchronized calls that invoke external/unknown code while holding a lockReentrantLock without try/finally unlock → lock may never be releasedsynchronized blocks on different objectssynchronized on entire methods where only a small critical section needs protectionReentrantLock for fine-grained locking with timeout capabilitysynchronized(this) in classes exposed to external code → suggest private lock objectsynchronized on virtual thread code → suggest ReentrantLock (avoids carrier thread pinning)volatile, AtomicXxx, or synchronizationboolean flag fields used to stop threads → must be volatile or AtomicBooleanvolatilenew Thread(...) created directly in application code → suggest ExecutorServiceExecutorService never shut down → resource leakExecutors.newCachedThreadPool()) under high load → suggest bounded poolExecutors.newVirtualThreadPerTaskExecutor() for I/O-bound workloadsjstack <pid>/java-virtual-threads modernization/java-review for general code quality