|
Scala example source code file (ThreadLocalStorage.scala)
The ThreadLocalStorage.scala Scala example source codepackage scala.reflect package runtime import java.lang.Thread._ private[reflect] trait ThreadLocalStorage { self: SymbolTable => // see a discussion at scala-internals for more information: // http://groups.google.com/group/scala-internals/browse_thread/thread/337ce68aa5e51f79 trait ThreadLocalStorage[T] { def get: T; def set(newValue: T): Unit } private class MyThreadLocalStorage[T](initialValue: => T) extends ThreadLocalStorage[T] { // TODO: how do we use org.cliffc.high_scale_lib.NonBlockingHashMap here? val values = new java.util.concurrent.ConcurrentHashMap[Thread, T]() def get: T = { if (values containsKey currentThread) values.get(currentThread) else { val value = initialValue values.putIfAbsent(currentThread, value) value } } def set(newValue: T): Unit = { values.put(currentThread, newValue) } } @inline final def mkThreadLocalStorage[T](x: => T): ThreadLocalStorage[T] = new MyThreadLocalStorage(x) } Other Scala source code examplesHere is a short list of links related to this Scala ThreadLocalStorage.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.