On 20/07/2025 11:29, Victor Madu wrote:
:
Are there any plans to support this level of carrier group
configurability in future versions of the JDK or Project Loom? Even an
opt-in or expert-mode API would go a long way in allowing more
fine-tuned control for advanced users without impacting the simplicity
that Loom provides by default.
There isn't a plan to expose anything at this time. It's a topic where
caution is required because custom schedulers is essentially executing
arbitrary code at sensitive times, e.g. exiting a monitor may require
scheduling a successor that is a virtual thread. Interaction with the
scheduler may be in the context of a carrier or virtual thread. It's way
too easy to self deadlock when attempting to coordinate between mounted
virtual threads and carriers using any form of synchronization.
That said, there are some work loads that aren't suited to work
stealing schedulers and there may be a case for using a different
scheduler for these cases. Whether that is built-in or provided by some
framework is an open question. There is an experimental/prototype
changes in the loom repo and a VirtualThreadScheduler interface. The
prototype allow you to set your own implementation via a system property
on the command. This includes interposing on the built-in scheduler.
There is also a prototype API for setting the scheduler when creating a
virtual thread. There is brief summary in a document [1] in the repo. If
you do try it out then it would be very helpful if you could come back
to report your experiences as that will help this project decide if
there is a case for providing something.
-Alan
[1]
https://github.com/openjdk/loom/blob/fibers/loom-docs/CustomSchedulers.md