We present P3, a new profiler suite for parallel applications on the Java Virtual Machine. P3 specifically targets metrics related to parallelism, concurrency, and synchronization. In particular, P3 profiles the use of concurrent entities (e.g., threads, tasks, actors, futures), constructs and classes to implement synchronization (including locks, thread parking, and the synchronizers from the java.util.concurrent package), lock-free operations (such as atomic and volatile memory accesses), as well as synchronized and concurrent collections. To the best of our knowledge, our suite is the first tool detecting the use of volatile memory accesses, futures, synchronizers, and utility classes commonly used in concurrent programming. Moreover, P3 incurs only moderate profiling overhead. P3 can be readily applied to popular benchmark suites and to public code repositories, facilitating new analyses in the wild. We describe the design and implementation of P3 and discuss how our tool was fundamental in the selection of workloads composing the Renaissance benchmark suite. Moreover, we use P3 to analyze the variability of different metrics for multiple iterations of the Renaissance benchmarks.