Expansion of native thread count by Object.wait() vs Condition.await()

Anton Vodonosov avodonosov at yandex.ru
Mon Oct 9 18:47:09 UTC 2023

I understood, thank you.

BlockingQueue.take() by itself is fine. (as well as all other
cases of Contition.await() when holding a ReentrantLock).
They perfectly unmount the virtual thread.

Only in case if in addition they are surrounded by 
synchronized the pinning happens.

So Condition.await() is fully virtual threading ready,
Object.wait() is made close to it by compensation
of a blocked native thread.

Only exotic cases like IO or blockingQueue.take()
within synchronized result in pathological pinning.

Not so bad, actually.

Best regards,
- Anton

More information about the loom-dev mailing list