Question on Project Loom and motivation to introduce ScopedValues

Ilya Starchenko st.ilya.101 at gmail.com
Sun Oct 8 18:41:15 UTC 2023


Hello loom-dev team,

Firstly, I'd like to express my appreciation for your work on Project Loom.
I have a couple of questions regarding ThreadLocal and the motivation
behind introducing ScopedValues that I hope you can clarify for me.


   1. I'm starting to deep how ScopedValues works(ref:
   https://github.com/openjdk/jdk/blob/dc4bc4f0844b768e83406f44f2a9ee50686b1d9d/src/java.base/share/classes/java/lang/Thread.java#L302)
and
   noticed that ScopedValues' snapshots are placed in the same place as the
   map of ThreadLocals. However, I'm struggling to grasp why a LinkedList of
   maps within the Thread field is favoured over a HashMap? I understand that
   ScopedValues have a concept of scope and are immutable, but I'm curious as
   to why it wasn't considered to introduce a new API for TL that would
   incorporate scope and immutability. Are there technical reasons that make
   ScopedValues superior to TL, or was enhancing ThreadLocal (by adding scope
   and immutability) not a viable option?
   2. Many users and libraries use ThreadLocal for object pooling(which can
   have a major performance impact). Do you have any recommendations for
   migrating these use cases? Perhaps to some form of global cache?


Best regards,
Ilya Starchenko

P.S. I am not a JDK developer; I am simply trying to gain a deeper
understanding of this topic. Thank you for your assistance.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/loom-dev/attachments/20231008/efbc0649/attachment-0001.htm>


More information about the loom-dev mailing list