Custom Schedulers: Customize current time and timed waits

Alan Bateman alan.bateman at oracle.com
Tue Jun 24 15:58:05 UTC 2025



On 22/06/2025 23:24, Quinn Klassen wrote:
> :
>
> For timed operations ideally I would like the virtual thread to 
> request the scheduler it wants to do a timed operation and the 
> scheduler decides how to accomplish this. That may be too high level 
> an interface to add since it looks like more libraries use 
> `java.util.concurrent.locks.LockSupport`. This is my first time 
> looking at the implementation of some of these low level calls, but 
> maybe it would be more realistic to allow a pluggable time source and 
> interception of these parking utilities.
>
Can you say a bit more about what you are doing? Mike Hearn mentioned 
deterministic testing but I can't tell from your mails if this is what 
you are doing.

In any case, the experimental interface for the scheduler is 
deliberately minimal. If a virtual thread waits in timed-Object.wait for 
example, then controls returns to scheduler. When the virtual thread can 
continue then its task will be queued to the scheduler to execute. This 
may be triggered by an Object.notify, timeout + monitor reacquired, 
interrupted + object reacquired. So triggered by the VM or other parts 
of the runtime. Also timeout is just one of the cases that causes a 
thread to continue. It's the same with LockSupport.parkNanos. I don't 
know if you are expecting the custom scheduler (essentially arbitrary 
code) to run at these critical times but right now, the scheduler is 
just used to execute tasks.

-Alan

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/loom-dev/attachments/20250624/f3b8f3be/attachment.htm>


More information about the loom-dev mailing list