Hi!

I'm looking into startup performance using Spring PetClinic as an example.
The technique I'm exploring is to preload classes in parallel before
running the main method to start the app. I observed that around 50 % of
startup time is spent in URLClassLoader::findClass so it would make sense
to run this work in parallel.

The process is as follows:

1: Create a URLClassLoader with 96 the Spring PetClinic JAR files
2: In parallel (using Executors::newFixedThreadPool), call
ClassLoader::loadClass(name) for 12163 class names known from a previous run
3: Run the application class main method as normal to start Spring PetClinic

With URLClassLoader advertising itself as "parallel capable", this
preloading is expected to work and indeed it does!

Without step 2 above, I observe startups like this:

 *Started PetClinicStarter in 7.307 seconds (process running for 7.729)*

with step 2 I observe startups like this:

*Started PetClinicStarter in 4.976 seconds (process running for 5.607)*

However, the observation I wanted to share here is that my first prototype
used Executors.newVirtualThreadPerTaskExecutor() instead, but that caused a
deadlock.

Is this difference in behavior expected? Is my preloading technique sound?

Here's a thread dump of the deadlock situation using virtual threads:

2026-03-07 18:17:50
Full thread dump OpenJDK 64-Bit Server VM (27-internal-adhoc.eirbjo.jdk
mixed mode, sharing)
                 JDK version: OpenJDK Runtime Environment (27.0) (build
27-internal-adhoc.eirbjo.jdk)

Threads class SMR info:
_java_thread_list=0x000060000008c020, length=23, elements={
0x00007fdd1b80c000, 0x00007fdd1c04cc00, 0x00007fdd1c050200,
0x00007fdd1c050a00,
0x00007fdd1c051200, 0x00007fdd1c051a00, 0x00007fdd1d00c000,
0x00007fdd1e010200,
0x00007fdd1e026000, 0x00007fdd1e027800, 0x00007fdd1d010a00,
0x00007fdd1c04e000,
0x00007fdd1e02c200, 0x00007fdd1c042800, 0x00007fdd1e028000,
0x00007fdd1c043000,
0x00007fdd1d015e00, 0x00007fdd1e028800, 0x00007fdd1d808e00,
0x00007fdd1e84b600,
0x00007fdd1a808200, 0x00007fdd1a808a00, 0x00007fdd1f8a2400
}

"main" #3 [7427] prio=5 os_prio=31 cpu=226.13ms elapsed=102.11s
tid=0x00007fdd1b80c000 nid=7427 in Object.wait()  [0x0000700007d52000]
   java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait0(java.base@27-internal/Native Method)
- waiting on <0x00000007000341e8> (a java.lang.VirtualThread)
at java.lang.Object.wait(java.base@27-internal/Object.java:391)
at java.lang.Thread.join(java.base@27-internal/Thread.java:1924)
- locked <0x00000007000341e8> (a java.lang.VirtualThread)
at java.lang.Thread.join(java.base@27-internal/Thread.java:1990)
at PetClinicStarter.preloadClasses(PetClinicStarter.java:110)
at PetClinicStarter.main(PetClinicStarter.java:35)

"Reference Handler" #13 [41219] daemon prio=10 os_prio=31 cpu=0.28ms
elapsed=102.08s tid=0x00007fdd1c04cc00 nid=41219 waiting on condition
 [0x000070000856d000]
   java.lang.Thread.State: RUNNABLE
at 
java.lang.ref.Reference.waitForReferencePendingList(java.base@27-internal/Native
Method)
at java.lang.ref.Reference.processPendingReferences(java.base@27-internal
/Reference.java:240)
at java.lang.ref.Reference$ReferenceHandler.run(java.base@27-internal
/Reference.java:202)

"Finalizer" #14 [24835] daemon prio=8 os_prio=31 cpu=0.15ms elapsed=102.08s
tid=0x00007fdd1c050200 nid=24835 in Object.wait()  [0x0000700008670000]
   java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait0(java.base@27-internal/Native Method)
- waiting on <0x0000000700033f08> (a java.lang.Object)
at java.lang.Object.wait(java.base@27-internal/Object.java:391)
at java.lang.Object.wait(java.base@27-internal/Object.java:353)
at java.lang.ref.ReferenceQueue.remove0(java.base@27-internal
/ReferenceQueue.java:136)
at java.lang.ref.ReferenceQueue.remove(java.base@27-internal
/ReferenceQueue.java:214)
- locked <0x0000000700033f08> (a java.lang.Object)
at java.lang.ref.Finalizer$FinalizerThread.run(java.base@27-internal
/Finalizer.java:165)

"Signal Dispatcher" #15 [25347] daemon prio=9 os_prio=31 cpu=0.30ms
elapsed=102.08s tid=0x00007fdd1c050a00 nid=25347 waiting on condition
 [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Service Thread" #16 [25603] daemon prio=9 os_prio=31 cpu=4.02ms
elapsed=102.08s tid=0x00007fdd1c051200 nid=25603 runnable
 [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Monitor Deflation Thread" #17 [40451] daemon prio=9 os_prio=31 cpu=14.38ms
elapsed=102.08s tid=0x00007fdd1c051a00 nid=40451 runnable
 [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" #18 [40195] daemon prio=9 os_prio=31 cpu=203.16ms
elapsed=102.08s tid=0x00007fdd1d00c000 nid=40195 waiting on condition
 [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE
   No compile task

"C1 CompilerThread0" #21 [39939] daemon prio=9 os_prio=31 cpu=226.25ms
elapsed=102.08s tid=0x00007fdd1e010200 nid=39939 waiting on condition
 [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE
   No compile task

"JDWP Transport Listener: dt_socket" #22 [39427] daemon prio=10 os_prio=31
cpu=6.82ms elapsed=102.08s tid=0x00007fdd1e026000 nid=39427 runnable
 [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"JDWP Event Helper Thread" #23 [39171] daemon prio=10 os_prio=31
cpu=19.68ms elapsed=102.08s tid=0x00007fdd1e027800 nid=39171 runnable
 [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"JDWP Command Reader" #24 [23815] daemon prio=10 os_prio=31 cpu=4.20ms
elapsed=96.59s tid=0x00007fdd1d010a00 nid=23815 runnable
 [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Notification Thread" #25 [27139] daemon prio=9 os_prio=31 cpu=0.14ms
elapsed=96.56s tid=0x00007fdd1c04e000 nid=27139 runnable
 [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Common-Cleaner" #26 [27395] daemon prio=8 os_prio=31 cpu=0.34ms
elapsed=96.55s tid=0x00007fdd1e02c200 nid=27395 in Object.wait()
 [0x000070000908e000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait0(java.base@27-internal/Native Method)
- waiting on <0x0000000700034018> (a java.lang.Object)
at java.lang.Object.wait(java.base@27-internal/Object.java:391)
at java.lang.ref.ReferenceQueue.remove0(java.base@27-internal
/ReferenceQueue.java:122)
at java.lang.ref.ReferenceQueue.remove(java.base@27-internal
/ReferenceQueue.java:200)
- locked <0x0000000700034018> (a java.lang.Object)
at jdk.internal.ref.CleanerImpl.run(java.base@27-internal
/CleanerImpl.java:146)
at java.lang.Thread.runWith(java.base@27-internal/Thread.java:1540)
at java.lang.Thread.run(java.base@27-internal/Thread.java:1527)
at jdk.internal.misc.InnocuousThread.run(java.base@27-internal
/InnocuousThread.java:148)

"VirtualThread-unblocker" #27 [38147] daemon prio=5 os_prio=31 cpu=0.83ms
elapsed=93.78s tid=0x00007fdd1c042800 nid=38147 runnable
 [0x0000700009397000]
   java.lang.Thread.State: RUNNABLE
at
java.lang.VirtualThread.takeVirtualThreadListToUnblock(java.base@27-internal/Native
Method)
at java.lang.VirtualThread.unblockVirtualThreads(java.base@27-internal
/VirtualThread.java:1417)
at
java.lang.VirtualThread$$Lambda/0x000000012f00ab88.run(java.base@27-internal/Unknown
Source)
at java.lang.Thread.runWith(java.base@27-internal/Thread.java:1540)
at java.lang.Thread.run(java.base@27-internal/Thread.java:1527)
at jdk.internal.misc.InnocuousThread.run(java.base@27-internal
/InnocuousThread.java:148)

"ForkJoinPool-1-worker-1" #29 [37635] daemon prio=5 os_prio=31 cpu=166.72ms
elapsed=93.78s tid=0x00007fdd1e028000  [0x0000700009498000]
   Carrying virtual thread #3987
at jdk.internal.vm.Continuation.run(java.base@27-internal
/Continuation.java:248)
at java.lang.VirtualThread.runContinuation(java.base@27-internal
/VirtualThread.java:295)
at
java.lang.VirtualThread$$Lambda/0x000000012f00b258.run(java.base@27-internal/Unknown
Source)
at
java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(java.base@27-internal
/ForkJoinTask.java:1596)
at java.util.concurrent.ForkJoinTask.doExec(java.base@27-internal
/ForkJoinTask.java:511)
at
java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(java.base@27-internal
/ForkJoinPool.java:1436)
at java.util.concurrent.ForkJoinPool.runWorker(java.base@27-internal
/ForkJoinPool.java:2011)
at java.util.concurrent.ForkJoinWorkerThread.run(java.base@27-internal
/ForkJoinWorkerThread.java:187)
   Mounted virtual thread #3987
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:549)
- waiting to lock <0x0000000700738c40> (a java.lang.Object)
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:502)
at java.lang.ClassLoader.defineClass1(java.base@27-internal/Native Method)
at java.lang.ClassLoader.defineClass(java.base@27-internal
/ClassLoader.java:974)
at java.security.SecureClassLoader.defineClass(java.base@27-internal
/SecureClassLoader.java:145)
at java.net.URLClassLoader.defineClass(java.base@27-internal
/URLClassLoader.java:473)
at java.net.URLClassLoader.findClassImpl(java.base@27-internal
/URLClassLoader.java:386)
at java.net.URLClassLoader.findClass(java.base@27-internal
/URLClassLoader.java:378)
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:569)
- locked <0x00000007026ed218> (a java.lang.Object)
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:502)
at PetClinicStarter.lambda$preloadClasses$0(PetClinicStarter.java:94)
at PetClinicStarter$$Lambda/0x000000012f041a28.run(Unknown Source)
at java.lang.Thread.runWith(java.base@27-internal/Thread.java:1540)
at java.lang.VirtualThread.run(java.base@27-internal/VirtualThread.java:470)
at java.lang.VirtualThread$VThreadContinuation$1.run(java.base@27-internal
/VirtualThread.java:250)
at jdk.internal.vm.Continuation.enter0(java.base@27-internal
/Continuation.java:322)
at jdk.internal.vm.Continuation.enter(java.base@27-internal
/Continuation.java:313)

"ForkJoinPool-1-worker-2" #39 [37379] daemon prio=5 os_prio=31 cpu=106.32ms
elapsed=93.78s tid=0x00007fdd1c043000  [0x000070000959b000]
   Carrying virtual thread #3984
at jdk.internal.vm.Continuation.run(java.base@27-internal
/Continuation.java:248)
at java.lang.VirtualThread.runContinuation(java.base@27-internal
/VirtualThread.java:295)
at
java.lang.VirtualThread$$Lambda/0x000000012f00b258.run(java.base@27-internal/Unknown
Source)
at
java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(java.base@27-internal
/ForkJoinTask.java:1596)
at java.util.concurrent.ForkJoinTask.doExec(java.base@27-internal
/ForkJoinTask.java:511)
at
java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(java.base@27-internal
/ForkJoinPool.java:1436)
at java.util.concurrent.ForkJoinPool.runWorker(java.base@27-internal
/ForkJoinPool.java:2011)
at java.util.concurrent.ForkJoinWorkerThread.run(java.base@27-internal
/ForkJoinWorkerThread.java:187)
   Mounted virtual thread #3984
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:551)
- waiting to lock <0x0000000700078cc8> (a java.lang.Object)
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:502)
at java.lang.ClassLoader.defineClass1(java.base@27-internal/Native Method)
at java.lang.ClassLoader.defineClass(java.base@27-internal
/ClassLoader.java:974)
at java.security.SecureClassLoader.defineClass(java.base@27-internal
/SecureClassLoader.java:145)
at java.net.URLClassLoader.defineClass(java.base@27-internal
/URLClassLoader.java:473)
at java.net.URLClassLoader.findClassImpl(java.base@27-internal
/URLClassLoader.java:386)
at java.net.URLClassLoader.findClass(java.base@27-internal
/URLClassLoader.java:378)
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:569)
- locked <0x00000007026a91c0> (a java.lang.Object)
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:502)
at PetClinicStarter.lambda$preloadClasses$0(PetClinicStarter.java:94)
at PetClinicStarter$$Lambda/0x000000012f041a28.run(Unknown Source)
at java.lang.Thread.runWith(java.base@27-internal/Thread.java:1540)
at java.lang.VirtualThread.run(java.base@27-internal/VirtualThread.java:470)
at java.lang.VirtualThread$VThreadContinuation$1.run(java.base@27-internal
/VirtualThread.java:250)
at jdk.internal.vm.Continuation.enter0(java.base@27-internal
/Continuation.java:322)
at jdk.internal.vm.Continuation.enter(java.base@27-internal
/Continuation.java:313)

"ForkJoinPool-1-worker-3" #55 [28675] daemon prio=5 os_prio=31 cpu=95.01ms
elapsed=93.78s tid=0x00007fdd1d015e00  [0x000070000969e000]
   Carrying virtual thread #3517
at jdk.internal.vm.Continuation.run(java.base@27-internal
/Continuation.java:248)
at java.lang.VirtualThread.runContinuation(java.base@27-internal
/VirtualThread.java:295)
at
java.lang.VirtualThread$$Lambda/0x000000012f00b258.run(java.base@27-internal/Unknown
Source)
at
java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(java.base@27-internal
/ForkJoinTask.java:1596)
at java.util.concurrent.ForkJoinTask.doExec(java.base@27-internal
/ForkJoinTask.java:511)
at
java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(java.base@27-internal
/ForkJoinPool.java:1436)
at java.util.concurrent.ForkJoinPool.runWorker(java.base@27-internal
/ForkJoinPool.java:2011)
at java.util.concurrent.ForkJoinWorkerThread.run(java.base@27-internal
/ForkJoinWorkerThread.java:187)
   Mounted virtual thread #3517
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:551)
- waiting to lock <0x00000007018a5e08> (a java.lang.Object)
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:502)
at java.lang.ClassLoader.defineClass1(java.base@27-internal/Native Method)
at java.lang.ClassLoader.defineClass(java.base@27-internal
/ClassLoader.java:974)
at java.security.SecureClassLoader.defineClass(java.base@27-internal
/SecureClassLoader.java:145)
at java.net.URLClassLoader.defineClass(java.base@27-internal
/URLClassLoader.java:473)
at java.net.URLClassLoader.findClassImpl(java.base@27-internal
/URLClassLoader.java:386)
at java.net.URLClassLoader.findClass(java.base@27-internal
/URLClassLoader.java:378)
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:569)
- locked <0x00000007fff07b20> (a java.lang.Object)
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:502)
at PetClinicStarter.lambda$preloadClasses$0(PetClinicStarter.java:94)
at PetClinicStarter$$Lambda/0x000000012f041a28.run(Unknown Source)
at java.lang.Thread.runWith(java.base@27-internal/Thread.java:1540)
at java.lang.VirtualThread.run(java.base@27-internal/VirtualThread.java:470)
at java.lang.VirtualThread$VThreadContinuation$1.run(java.base@27-internal
/VirtualThread.java:250)
at jdk.internal.vm.Continuation.enter0(java.base@27-internal
/Continuation.java:322)
at jdk.internal.vm.Continuation.enter(java.base@27-internal
/Continuation.java:313)

"ForkJoinPool-1-worker-4" #79 [36611] daemon prio=5 os_prio=31 cpu=98.45ms
elapsed=93.78s tid=0x00007fdd1e028800  [0x00007000097a1000]
   Carrying virtual thread #3938
at jdk.internal.vm.Continuation.run(java.base@27-internal
/Continuation.java:248)
at java.lang.VirtualThread.runContinuation(java.base@27-internal
/VirtualThread.java:295)
at
java.lang.VirtualThread$$Lambda/0x000000012f00b258.run(java.base@27-internal/Unknown
Source)
at
java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(java.base@27-internal
/ForkJoinTask.java:1596)
at java.util.concurrent.ForkJoinTask.doExec(java.base@27-internal
/ForkJoinTask.java:511)
at
java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(java.base@27-internal
/ForkJoinPool.java:1436)
at java.util.concurrent.ForkJoinPool.runWorker(java.base@27-internal
/ForkJoinPool.java:2011)
at java.util.concurrent.ForkJoinWorkerThread.run(java.base@27-internal
/ForkJoinWorkerThread.java:187)
   Mounted virtual thread #3938
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:551)
- waiting to lock <0x00000007ffdd1290> (a java.lang.Object)
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:502)
at java.lang.ClassLoader.defineClass1(java.base@27-internal/Native Method)
at java.lang.ClassLoader.defineClass(java.base@27-internal
/ClassLoader.java:974)
at java.security.SecureClassLoader.defineClass(java.base@27-internal
/SecureClassLoader.java:145)
at java.net.URLClassLoader.defineClass(java.base@27-internal
/URLClassLoader.java:473)
at java.net.URLClassLoader.findClassImpl(java.base@27-internal
/URLClassLoader.java:386)
at java.net.URLClassLoader.findClass(java.base@27-internal
/URLClassLoader.java:378)
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:569)
- locked <0x0000000702657fd8> (a java.lang.Object)
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:502)
at PetClinicStarter.lambda$preloadClasses$0(PetClinicStarter.java:94)
at PetClinicStarter$$Lambda/0x000000012f041a28.run(Unknown Source)
at java.lang.Thread.runWith(java.base@27-internal/Thread.java:1540)
at java.lang.VirtualThread.run(java.base@27-internal/VirtualThread.java:470)
at java.lang.VirtualThread$VThreadContinuation$1.run(java.base@27-internal
/VirtualThread.java:250)
at jdk.internal.vm.Continuation.enter0(java.base@27-internal
/Continuation.java:322)
at jdk.internal.vm.Continuation.enter(java.base@27-internal
/Continuation.java:313)

"ForkJoinPool-1-worker-5" #90 [36099] daemon prio=5 os_prio=31 cpu=96.76ms
elapsed=93.78s tid=0x00007fdd1d808e00  [0x00007000098a5000]
   Carrying virtual thread #3648
at jdk.internal.vm.Continuation.run(java.base@27-internal
/Continuation.java:248)
at java.lang.VirtualThread.runContinuation(java.base@27-internal
/VirtualThread.java:295)
at
java.lang.VirtualThread$$Lambda/0x000000012f00b258.run(java.base@27-internal/Unknown
Source)
at
java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(java.base@27-internal
/ForkJoinTask.java:1596)
at java.util.concurrent.ForkJoinTask.doExec(java.base@27-internal
/ForkJoinTask.java:511)
at
java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(java.base@27-internal
/ForkJoinPool.java:1436)
at java.util.concurrent.ForkJoinPool.runWorker(java.base@27-internal
/ForkJoinPool.java:2011)
at java.util.concurrent.ForkJoinWorkerThread.run(java.base@27-internal
/ForkJoinWorkerThread.java:187)
   Mounted virtual thread #3648
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:551)
- waiting to lock <0x00000007fffd49d0> (a java.lang.Object)
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:502)
at java.lang.ClassLoader.defineClass1(java.base@27-internal/Native Method)
at java.lang.ClassLoader.defineClass(java.base@27-internal
/ClassLoader.java:974)
at java.security.SecureClassLoader.defineClass(java.base@27-internal
/SecureClassLoader.java:145)
at java.net.URLClassLoader.defineClass(java.base@27-internal
/URLClassLoader.java:473)
at java.net.URLClassLoader.findClassImpl(java.base@27-internal
/URLClassLoader.java:386)
at java.net.URLClassLoader.findClass(java.base@27-internal
/URLClassLoader.java:378)
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:569)
- locked <0x00000007ffff8860> (a java.lang.Object)
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:502)
at PetClinicStarter.lambda$preloadClasses$0(PetClinicStarter.java:94)
at PetClinicStarter$$Lambda/0x000000012f041a28.run(Unknown Source)
at java.lang.Thread.runWith(java.base@27-internal/Thread.java:1540)
at java.lang.VirtualThread.run(java.base@27-internal/VirtualThread.java:470)
at java.lang.VirtualThread$VThreadContinuation$1.run(java.base@27-internal
/VirtualThread.java:250)
at jdk.internal.vm.Continuation.enter0(java.base@27-internal
/Continuation.java:322)
at jdk.internal.vm.Continuation.enter(java.base@27-internal
/Continuation.java:313)

"ForkJoinPool-1-worker-6" #92 [28931] daemon prio=5 os_prio=31 cpu=108.35ms
elapsed=93.78s tid=0x00007fdd1e84b600  [0x00007000099a7000]
   Carrying virtual thread #3985
at jdk.internal.vm.Continuation.run(java.base@27-internal
/Continuation.java:248)
at java.lang.VirtualThread.runContinuation(java.base@27-internal
/VirtualThread.java:295)
at
java.lang.VirtualThread$$Lambda/0x000000012f00b258.run(java.base@27-internal/Unknown
Source)
at
java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(java.base@27-internal
/ForkJoinTask.java:1596)
at java.util.concurrent.ForkJoinTask.doExec(java.base@27-internal
/ForkJoinTask.java:511)
at
java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(java.base@27-internal
/ForkJoinPool.java:1436)
at java.util.concurrent.ForkJoinPool.runWorker(java.base@27-internal
/ForkJoinPool.java:2011)
at java.util.concurrent.ForkJoinWorkerThread.run(java.base@27-internal
/ForkJoinWorkerThread.java:187)
   Mounted virtual thread #3985
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:551)
- waiting to lock <0x0000000700746190> (a java.lang.Object)
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:502)
at java.lang.ClassLoader.defineClass1(java.base@27-internal/Native Method)
at java.lang.ClassLoader.defineClass(java.base@27-internal
/ClassLoader.java:974)
at java.security.SecureClassLoader.defineClass(java.base@27-internal
/SecureClassLoader.java:145)
at java.net.URLClassLoader.defineClass(java.base@27-internal
/URLClassLoader.java:473)
at java.net.URLClassLoader.findClassImpl(java.base@27-internal
/URLClassLoader.java:386)
at java.net.URLClassLoader.findClass(java.base@27-internal
/URLClassLoader.java:378)
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:569)
- locked <0x00000007026b76d0> (a java.lang.Object)
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:502)
at PetClinicStarter.lambda$preloadClasses$0(PetClinicStarter.java:94)
at PetClinicStarter$$Lambda/0x000000012f041a28.run(Unknown Source)
at java.lang.Thread.runWith(java.base@27-internal/Thread.java:1540)
at java.lang.VirtualThread.run(java.base@27-internal/VirtualThread.java:470)
at java.lang.VirtualThread$VThreadContinuation$1.run(java.base@27-internal
/VirtualThread.java:250)
at jdk.internal.vm.Continuation.enter0(java.base@27-internal
/Continuation.java:322)
at jdk.internal.vm.Continuation.enter(java.base@27-internal
/Continuation.java:313)

"ForkJoinPool-1-worker-7" #94 [29187] daemon prio=5 os_prio=31 cpu=109.94ms
elapsed=93.78s tid=0x00007fdd1a808200  [0x0000700009aaa000]
   Carrying virtual thread #3976
at jdk.internal.vm.Continuation.run(java.base@27-internal
/Continuation.java:248)
at java.lang.VirtualThread.runContinuation(java.base@27-internal
/VirtualThread.java:295)
at
java.lang.VirtualThread$$Lambda/0x000000012f00b258.run(java.base@27-internal/Unknown
Source)
at
java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(java.base@27-internal
/ForkJoinTask.java:1596)
at java.util.concurrent.ForkJoinTask.doExec(java.base@27-internal
/ForkJoinTask.java:511)
at
java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(java.base@27-internal
/ForkJoinPool.java:1436)
at java.util.concurrent.ForkJoinPool.runWorker(java.base@27-internal
/ForkJoinPool.java:2011)
at java.util.concurrent.ForkJoinWorkerThread.run(java.base@27-internal
/ForkJoinWorkerThread.java:187)
   Mounted virtual thread #3976
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:551)
- waiting to lock <0x00000007ffdedd98> (a java.lang.Object)
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:502)
at java.lang.ClassLoader.defineClass1(java.base@27-internal/Native Method)
at java.lang.ClassLoader.defineClass(java.base@27-internal
/ClassLoader.java:974)
at java.security.SecureClassLoader.defineClass(java.base@27-internal
/SecureClassLoader.java:145)
at java.net.URLClassLoader.defineClass(java.base@27-internal
/URLClassLoader.java:473)
at java.net.URLClassLoader.findClassImpl(java.base@27-internal
/URLClassLoader.java:386)
at java.net.URLClassLoader.findClass(java.base@27-internal
/URLClassLoader.java:378)
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:569)
- locked <0x0000000702699910> (a java.lang.Object)
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:502)
at PetClinicStarter.lambda$preloadClasses$0(PetClinicStarter.java:94)
at PetClinicStarter$$Lambda/0x000000012f041a28.run(Unknown Source)
at java.lang.Thread.runWith(java.base@27-internal/Thread.java:1540)
at java.lang.VirtualThread.run(java.base@27-internal/VirtualThread.java:470)
at java.lang.VirtualThread$VThreadContinuation$1.run(java.base@27-internal
/VirtualThread.java:250)
at jdk.internal.vm.Continuation.enter0(java.base@27-internal
/Continuation.java:322)
at jdk.internal.vm.Continuation.enter(java.base@27-internal
/Continuation.java:313)

"ForkJoinPool-1-worker-8" #101 [29699] daemon prio=5 os_prio=31 cpu=69.64ms
elapsed=93.78s tid=0x00007fdd1a808a00  [0x0000700009bad000]
   Carrying virtual thread #3970
at jdk.internal.vm.Continuation.run(java.base@27-internal
/Continuation.java:248)
at java.lang.VirtualThread.runContinuation(java.base@27-internal
/VirtualThread.java:295)
at
java.lang.VirtualThread$$Lambda/0x000000012f00b258.run(java.base@27-internal/Unknown
Source)
at
java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(java.base@27-internal
/ForkJoinTask.java:1596)
at java.util.concurrent.ForkJoinTask.doExec(java.base@27-internal
/ForkJoinTask.java:511)
at
java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(java.base@27-internal
/ForkJoinPool.java:1436)
at java.util.concurrent.ForkJoinPool.runWorker(java.base@27-internal
/ForkJoinPool.java:2011)
at java.util.concurrent.ForkJoinWorkerThread.run(java.base@27-internal
/ForkJoinWorkerThread.java:187)
   Mounted virtual thread #3970
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:551)
- waiting to lock <0x00000007ffddb830> (a java.lang.Object)
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:502)
at java.lang.ClassLoader.defineClass1(java.base@27-internal/Native Method)
at java.lang.ClassLoader.defineClass(java.base@27-internal
/ClassLoader.java:974)
at java.security.SecureClassLoader.defineClass(java.base@27-internal
/SecureClassLoader.java:145)
at java.net.URLClassLoader.defineClass(java.base@27-internal
/URLClassLoader.java:473)
at java.net.URLClassLoader.findClassImpl(java.base@27-internal
/URLClassLoader.java:386)
at java.net.URLClassLoader.findClass(java.base@27-internal
/URLClassLoader.java:378)
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:569)
- locked <0x0000000702692b68> (a java.lang.Object)
at java.lang.ClassLoader.loadClass(java.base@27-internal
/ClassLoader.java:502)
at PetClinicStarter.lambda$preloadClasses$0(PetClinicStarter.java:94)
at PetClinicStarter$$Lambda/0x000000012f041a28.run(Unknown Source)
at java.lang.Thread.runWith(java.base@27-internal/Thread.java:1540)
at java.lang.VirtualThread.run(java.base@27-internal/VirtualThread.java:470)
at java.lang.VirtualThread$VThreadContinuation$1.run(java.base@27-internal
/VirtualThread.java:250)
at jdk.internal.vm.Continuation.enter0(java.base@27-internal
/Continuation.java:322)
at jdk.internal.vm.Continuation.enter(java.base@27-internal
/Continuation.java:313)

"Attach Listener" #12205 [27911] daemon prio=9 os_prio=31 cpu=1.29ms
elapsed=81.08s tid=0x00007fdd1f8a2400 nid=27911 waiting on condition
 [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"G1 Conc#1" os_prio=31 cpu=14.71ms elapsed=93.69s tid=0x00007fdd1b0169e0
nid=31235 runnable

"GC Thread#3" os_prio=31 cpu=21.70ms elapsed=93.76s tid=0x00007fdd1b014730
nid=30979 runnable

"GC Thread#2" os_prio=31 cpu=0.88ms elapsed=93.76s tid=0x00007fdd1b014340
nid=30723 runnable

"GC Thread#1" os_prio=31 cpu=16.10ms elapsed=93.76s tid=0x00007fdd1b111ac0
nid=34051 runnable

"G1 Conc#0" os_prio=31 cpu=14.65ms elapsed=93.76s tid=0x00007fdd1b10f000
nid=34563 runnable

"G1 Main Marker" os_prio=31 cpu=0.55ms elapsed=93.76s
tid=0x00007fdd1b831c00 nid=35331 runnable

"VM Thread" os_prio=31 cpu=12.98ms elapsed=102.10s tid=0x00007fdd1b309b70
nid=15875 runnable

"VM Periodic Task Thread" os_prio=31 cpu=2.93ms elapsed=102.10s
tid=0x00007fdd1b307800 nid=12807 waiting on condition

"G1 Service" os_prio=31 cpu=165.25ms elapsed=102.11s tid=0x00007fdd1d008200
nid=12291 runnable

"G1 Refinement Workers#0" os_prio=31 cpu=1.36ms elapsed=102.11s
tid=0x00007fdd1cc04080 nid=17667 runnable

"G1 Refine Control" os_prio=31 cpu=126.44ms elapsed=102.11s
tid=0x00007fdd1c00c200 nid=18435 runnable

"GC Thread#0" os_prio=31 cpu=30.44ms elapsed=102.11s tid=0x00007fdd1b107da0
nid=18947 runnable

JNI global refs: 46, weak refs: 996

Reply via email to