On Tue, 6 Dec 2022 10:16:38 GMT, Alan Bateman <al...@openjdk.org> wrote:
> The implementation of Thread.yield for virtual threads is currently a "lazy > submit". This means the task for the virtual thread is queued to the > carrier/worker local queue without signalling other threads. This behavior > can be surprising/unfair when there are tasks in the submission queues, say > when a platform thread has started or unparked a virtual thread. > > Ron, Doug Lea, Viktor Klang and I have discussed this topic and propose to > change Thread.yield to use "external submit" when the local task queue is > empty, and to push to the local queue when not empty. The change improves the > fairness but will of course increase the chances that repeated Thread.yield > will bounce between carriers. test/jdk/java/lang/Thread/virtual/YieldQueuing.java line 43: > 41: > 42: /** > 43: * Test Thread.yield submits the task for the current virtyal thread > to a scheduler Suggestion: * Test Thread.yield submits the task for the current virtual thread to a scheduler ------------- PR: https://git.openjdk.org/jdk/pull/11533