[HN Gopher] On Java/JVM: Loom and Thread Fairness ___________________________________________________________________ On Java/JVM: Loom and Thread Fairness Author : lichtenberger Score : 31 points Date : 2022-06-02 20:24 UTC (2 hours ago) (HTM) web link (www.morling.dev) (TXT) w3m dump (www.morling.dev) | klabb3 wrote: | I only observe Java from a distance but everything I've read | about project loom is amazing. | | Speaking as someone who has worked intricately on an async | runtime in another language, I've more and more started to | question the premises around the explicitly async paradigm. Lots | of things we were "promised" with async turned out to be just as | complicated in the threaded (i.e. blocking) programming models, | and now we have two incompatible programming models. I'm now of | the opinion that we should improve (instead of replace) our | threaded models and do under-the-hood optimizations to sort out | the performance issues. | | If I had a dime for everytime someone made a blocking call from | an async function.. And who can blame them? Most blocking | functions aren't even documented as such, you just have to know. | lichtenberger wrote: | Yes, I think Loom is an amazing step forward and it's brilliant | to just change the blocking methods and thus existing code | might already benefit with minor changes. | lichtenberger wrote: | The mentioned twitter discussion is also pretty interesting IMHO | :-) | BenoitP wrote: | Not a new kind of issue, and not a problem IMHO. | | Some GCs need to reach a safepoint before doing their work; and | when a classic Thread is chugging along in a tight loop, that | thread is blocking the whole system for a pending GC. | | One hacky fix is to provide an opportunity for a safepoint | (System.out.print every 10k iterations). Other tools like JVM | command line options allow for observing safepoint triggering. | | The same goes for virtual threads: inserting a Thread.sleep(1L) | every nth iteration of a tight loop does it. | | Also there was talk specifying a custom scheduler for the virtual | threads. That would not help in inserting switching | opportunities, but it would give a way to define what kind of | fairness you want. ___________________________________________________________________ (page generated 2022-06-02 23:01 UTC)