Custom Schedulers: Customize current time and timed waits

Robert Engels robaho at me.com
Tue Jun 24 16:05:44 UTC 2025


As a side note - i would love to learn more about deterministic testing - seems like an oxymoron to me - at least in trying to modify the JVM to simulate determinism directly. I’ve never heard of anything like this working. Clearly, you can write a deterministic simulator (tester) for event flows etc. but afaik these are done in a higher level environment. Even real time Java was never deterministic so I don’t see how this would be useful - but I’m curious. 

> On Jun 24, 2025, at 10:58 AM, Alan Bateman <alan.bateman at oracle.com> wrote:
> 
> 
> 
> 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/d4f36c13/attachment.htm>


More information about the loom-dev mailing list