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