Thread Locals (was Re: State of Loom)
Remi Forax
forax at univ-mlv.fr
Thu Jun 4 15:25:56 UTC 2020
----- Mail original -----
> De: "Douglas Surber" <douglas.surber at oracle.com>
> À: "loom-dev" <loom-dev at openjdk.java.net>
> Envoyé: Jeudi 4 Juin 2020 16:58:40
> Objet: Re: Thread Locals (was Re: State of Loom)
> One more datapoint on ThreadLocal. I was crawling through a .jfr this morning
> and found this.
>
>> ThreadLocal$ThreadLocalMap$Entry
>> java.lang.ThreadLocal$ThreadLocalMap.getEntry(ThreadLocal) (JIT Compiled) 4
>> ThreadLocal$ThreadLocalMap$Entry
>> java.lang.ThreadLocal$ThreadLocalMap.access$000(ThreadLocal$ThreadLocalMap,
>> ThreadLocal) (JIT Compiled) 4
>> Object java.lang.ThreadLocal.get() (JIT Compiled) 4
>> ByteBuffer sun.nio.ch.Util.getTemporaryDirectBuffer(int) (JIT Compiled) 4
>> int sun.nio.ch.IOUtil.read(FileDescriptor, ByteBuffer, long, NativeDispatcher)
>> (JIT Compiled) 4
>> int sun.nio.ch.SocketChannelImpl.read(ByteBuffer) (JIT Compiled) 4
>>
>
> Putting a ThreadLocal.get inside SocketChannel.read is surprising and given the
> condemnation of ThreadLocals in this forum, probably suboptimal.
Loom is using a carrier thread local (a threadlocal that uses only carrier threads)
https://github.com/openjdk/loom/blob/76adbcf0dee92cdb7e1deca01a3e63309bd1a2f9/src/java.base/share/classes/sun/nio/ch/Util.java#L233
>
> For what it's worth.
>
> Douglas
Rémi
More information about the loom-dev
mailing list