By the OS, not by the scheduler
see https://cr.openjdk.java.net/~rpressler/loom/loom/sol1_part2....
> Second, Loom's virtual threads can also be forcibly preempted by the scheduler at any safepoint to implement time sharing
The whole quote
> Second, Loom's virtual threads can also be forcibly preempted by the scheduler at any safepoint to implement time sharing. Currently, this capability isn't exposed because we're yet to find a use-case for it
I believe it's a reference to [1] but i may be wrong.
[1] https://download.java.net/java/early_access/loom/docs/api/ja...
Sorry I was skimming! Thanks!