In this commit, for applications using Spring with JDK 24, I added support for viewing Virtual threads information in ProcessInfo using VirtualThreadSchedulerMXBean. The use of VirtualThreadSchedulerMXBean is done using reflection. If the current JDK version is less than 24, then we will return null, otherwise a class with all the required VirtualThreadsInfo information.

I also added a test checking if null is returned if the JDK version is less than 24.

There is also a point that bothers me, do you think we need an additional test to check the values of the VirtualThreadsInfo fields themselves or not?

Related to #43175

Comment From: philwebb

do you think we need an additional test to check the values of the VirtualThreadsInfo fields themselves or not?

I think we could add something to the existing test just to check that we have sensible(ish) values.

Comment From: mhalbritter

Thank you very much and congratulations on your first contribution :tada:!

Comment From: nosan

Since reflection is being used here, I wonder whether RuntimeHints should be registered for jdk.management.VirtualThreadSchedulerMXBean.

```java

static class ProcessInfoContributorRuntimeHints implements RuntimeHintsRegistrar {

    private final BindingReflectionHintsRegistrar bindingRegistrar = new BindingReflectionHintsRegistrar();

    @Override
    public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
        this.bindingRegistrar.registerReflectionHints(hints.reflection(), ProcessInfo.class);
        hints.reflection()
            .registerTypeIfPresent(classLoader, "jdk.management.VirtualThreadSchedulerMXBean",
                    MemberCategory.INVOKE_PUBLIC_METHODS);
    }

}

```

Comment From: mhalbritter

Yeah, good catch. I'll add that.