Custom Schedulers use-case

Alan Bateman alan.bateman at oracle.com
Fri Oct 10 08:01:32 UTC 2025


On 09/10/2025 22:11, Man Cao wrote:
> Hi loom developers,
>
> Official support for custom schedulers is highly valuable to some of 
> our Java applications such as our colleague David Gay's use case.
>
> Are there any major concerns or obstacles to official support for 
> custom schedulers?
>

There are some workloads that are not suited to a work stealing 
scheduler. We've seen this with workloads that have low concurrency, not 
a lot going on, and the scanning to "find work" consuming additional CPU 
cycles that nobody wants to pay for. There may be merit in having the 
JDK provide a different scheduler for such cases, more experimentation 
is required.

There are folks that want to do things like using the AWT event thread, 
or the JavaFX application thread, as the carrier. They've seen 
coroutines used on UI threads in other systems and want to experiment 
doing something similar. Early explorations into this did not go very far.

There are other folks that are interested in thread affinity, binding 
virtual threads to specific carriers, and carriers to specific cores in 
NUMA nodes. Some of this exploration is about integration with existing 
systems that use event loops. We are looking forward to a write-up of 
these explorations and any findings.

Beyond this there are folks doing fun things with simulation and other 
experimentation.

I'm not familiar with David Gay's work except for Liam's mail to say 
that they are doing something in the area of multi-tenancy. If a 
write-up or a summary of the explorations and findings could be sent to 
loom-dev then it would be useful.

To your question, the topic of custom schedulers is an 
exploration/research topic. The JDK has to be cautious. Calling out to a 
custom scheduler (= arbitrary code) from core/sensitive parts of the 
runtime is very scary. It's very easy to "self deadlock" - we've seen 
folks trying to use locks to coordinate between mounted virtual threads 
and their carrier. We are also concerned that the API surface for 
schedulers will grow.

There are two prototypes in the loom repo at this time, this is what 
Liam linked to. We are hoping that folks that are interested in this 
topic will try one or both and come back their findings. The more data, 
esp. from real world usage, will help inform this project on whether 
there is merit is going further with either direction or whether there 
are other directions that might be more fruitful.

-Alan



More information about the loom-dev mailing list