When profiling with VisualVM, a CPU time lower than the wall clock time can be caused by cache misses (=waiting for memory access), blocked threads, or even the OS deciding that something else is more important.
But how should I interpret the opposite, if CPU time is actually higher than wall clock time? My first guess is parallelization, but my code is single-threaded. Does JIT parallelize? I use OpenJDK 11.
I have several examples of this in my code, below is just one:
